HarmonyOS NEXT 技术实践-基于基础视觉服务的多目标识别
在智能手机、平板和其他智能设备日益智能化的今天,视觉识别技术成为提升用户体验和智能交互的重要手段。HarmonyOS NEXT通过基础视觉服务(HMS Core Vision)提供了一套强大的视觉识别功能,其中多目标识别作为其关键技术之一,广泛应用于智能设备的图像处理与分析任务。本文将通过一个简单的技术实践示例,展示如何在HarmonyOS NEXT中实现基于基础视觉服务的多目标识别。

一、项目背景
1. 相关概念
基础视觉服务(HMS Core Vision):
HMS Core Vision是华为提供的视觉识别功能平台,涵盖了图像识别、目标检测、面部识别、文字识别等多种视觉分析能力。通过集成该服务,开发者能够快速实现图像内容的识别和处理,提升应用的智能化水平。基础视觉服务支持多种硬件设备,包括华为手机、平板及其他支持HarmonyOS的设备,能够提供强大的AI视觉功能,广泛应用于各类智能场景中。基础视觉服务(HMS Core Vision)的适用场景包括风景、动物、植物、建筑、树、人脸、表格、文本等。
多目标识别(Object Detection):
多目标识别是指在一张图片或视频流中同时识别出多个不同类别的目标,并标注出它们的位置和类别。该功能广泛应用于自动驾驶、安防监控、无人机导航、机器人视觉、智能购物等场景,帮助设备理解和分析周围环境中的多个目标物体。在HarmonyOS NEXT中,开发者可以通过@hms.ai.vision.objectDetection.d.ts接口实现这一功能。这一技术不仅能识别单一目标,还能同时分析多种目标物体,如行人、车辆、动物等,识别的结果可包括每个目标的位置坐标、类别标签等信息。
通过基础视觉服务,开发者可以轻松构建各种视觉感知能力。例如,在智慧家居应用中,摄像头可以通过多目标识别识别进入房间的物体,并判断它们是人、宠物、家具,进而实现智能化管理。在安防监控中,可以自动检测并追踪特定物体或人物,及时反馈异常情况,提升安全性。
2. 实现目标
在本示例中,我们将使用HarmonyOS NEXT的多目标识别接口@hms.ai.vision.objectDetection.d.ts,在应用中实现一张图片的多目标识别,并展示识别的结果。此示例通过一个简单的移动应用来进行演示,展示如何选择一张图片并启动多目标识别功能。用户可以通过点击“Select image”按钮选择一张图片,或通过相机拍摄照片,系统将通过“Start multi-object detection”按钮启动多目标识别功能。识别结果会以文本形式展示,用户能够清晰看到图像中所有被识别目标的位置信息和分类结果,进一步提高应用的互动性和智能化水平。
二、项目实现
1. 工程结构
├─ entry/src/main/ets
│ ├─ entryability
│ │ └─ EntryAbility.ets // 程序入口
│ ├─ entrybackupability
│ │ └─ EntryBackupAbility.ets
│ └─ pages
│ └─ Index.ets // 应用主界面
└─ entry/src/main/resources // 资源文件目录
2. 功能描述
应用的主界面展示了两个按钮:
- 选择图片:用户点击后可以从图库中选择一张图片或使用相机拍摄。
- 开始多目标识别:用户选择好图片后,点击此按钮进行多目标识别,识别结果通过文本形式展示在屏幕上。

3. 核心实现
本示例使用HMS Core提供的objectDetection API来实现多目标识别。具体的调用步骤如下:
3.1 导入多目标识别接口
首先,需要导入objectDetection接口,以便调用其提供的多目标识别功能:
import { objectDetection } from '@hms.ai.vision.objectDetection.d.ts';
3.2 选择图片并调用识别接口
用户选择图片后,通过以下代码启动多目标识别:
import { objectDetection } from '@hms.ai.vision.objectDetection.d.ts';function startObjectDetection(imageUri: string) {const request = {uri: imageUri, // 传入图片的URI// 可以传递额外的配置参数};objectDetection.process(request).then(response => {const detectionResults = response.objectList;displayResults(detectionResults); // 显示识别结果}).catch(error => {console.error('Error during object detection:', error);});
}function displayResults(detectionResults) {let resultText = '识别到的目标:\n';detectionResults.forEach((result, index) => {resultText += `目标 ${index + 1}: ${result.label}, 位置: (${result.rect.left}, ${result.rect.top}, ${result.rect.width}, ${result.rect.height})\n`;});// 显示在UI界面displayText(resultText);
}
process()方法将图片传递给HMS Core的多目标识别引擎,返回包含识别到的目标信息的结果。每个目标的信息包括标签、位置(矩形框)等。

3.3 用户界面与交互
在应用的UI部分,我们实现了图片选择和按钮交互的逻辑。以下是Index.ets中的代码示例,展示了UI部分如何与功能实现进行结合:
import { startObjectDetection } from './objectDetection';function onSelectImage() {// 选择图片或拍照let selectedImageUri = getImageUriFromGalleryOrCamera();startObjectDetection(selectedImageUri);
}function onStartDetection() {// 启动多目标识别startObjectDetection(selectedImageUri);
}// 绑定UI事件
<template><Button onClick={onSelectImage}>选择图片</Button><Button onClick={onStartDetection}>开始多目标识别</Button><Text id="resultText">识别结果将在这里显示</Text>
</template>

4. 权限与设备要求
本示例不涉及特殊权限配置,用户只需确保设备支持HMS Core的基础视觉服务即可。
支持设备包括华为手机、华为平板、2in1等。
系统版本要求:
- HarmonyOS系统:HarmonyOS NEXT Developer Beta1及以上。
- DevEco Studio版本:DevEco Studio NEXT Developer Beta1及以上。
- HarmonyOS SDK版本:HarmonyOS NEXT Developer Beta1 SDK及以上。
三、项目总结与前景展望
通过以上的实现,我们展示了如何利用HarmonyOS NEXT的基础视觉服务进行多目标识别。通过简单的API调用,开发者可以快速集成这一功能到自己的应用中,极大提升应用的智能化水平。
未来,随着AI技术的不断发展,HarmonyOS NEXT有望在多目标识别、图像处理和AI推理等方面提供更多功能。随着更多设备和应用接入HarmonyOS生态系统,跨平台、跨设备的智能体验将得到进一步优化,进而推动智能生活的全面发展。
多目标识别技术可以广泛应用于多个领域。在智能安防领域,HarmonyOS NEXT可以通过监控摄像头实时识别并跟踪多个目标,如人员、车辆、物品等,提高安全管理效率。在无人驾驶领域,HarmonyOS NEXT能够通过车载摄像头检测道路上的行人、车辆和障碍物,辅助自动驾驶系统做出反应。此外,在智能购物、仓储管理等场景中,设备能够自动识别和分类产品,大幅提高效率并降低人工成本。
本示例仅是一个简单的实践,开发者可以根据实际需求扩展功能,如支持更多的图像格式、增强识别精度、结合其他AI技术等。随着HMS Core服务的不断升级,未来会有更多创新的技术应用,值得开发者深入探索。
相关文章:
HarmonyOS NEXT 技术实践-基于基础视觉服务的多目标识别
在智能手机、平板和其他智能设备日益智能化的今天,视觉识别技术成为提升用户体验和智能交互的重要手段。HarmonyOS NEXT通过基础视觉服务(HMS Core Vision)提供了一套强大的视觉识别功能,其中多目标识别作为其关键技术之一&#x…...
【python】银行客户流失预测预处理部分,独热编码·标签编码·数据离散化处理·数据筛选·数据分割
数据预处理 通过网盘分享的文件:银行流失预测数据和代码 链接: https://pan.baidu.com/s/1loiB8rMvZArfjJccu4KW6w?pwdpfcs 提取码: pfcs 非数值特征处理 目的:将非数值特征转换为数值型,以便模型能够处理。方法: 地理位置&am…...
使用 docker ps 查不到刚刚创建的容器
问题描述 docker创建mysql容器并实现本地目录挂载,虽然创建成功了,但是查看容器却不存在,删除重新创建还是同样的问题。 原因分析: 因为做本地目录挂载的时候在宿主机中创建了相关文件夹,并且还预先把数据库文件丢…...
vue2+element 前端表格下载
前台下载table表格 可下载fixed columns和普通平铺的表格 exportExcel() {const tableContainer document.querySelector(#table)const fixflg tableContainer ? tableContainer.querySelector(.el-table__fixed) : null// const fixflg document.querySelector(.el-table_…...
MySQL使用LOAD DATA INFILE方式导入文本文件
【图书推荐】《MySQL 9从入门到性能优化(视频教学版)》-CSDN博客 《MySQL 9从入门到性能优化(视频教学版)(数据库技术丛书)》(王英英)【摘要 书评 试读】- 京东图书 (jd.com) MySQL9数据库技术_夏天又到了…...
【从零开始入门unity游戏开发之——unity篇02】unity6基础入门——软件下载安装、Unity Hub配置、安装unity编辑器、许可证管理
文章目录 一、软件下载安装1、Unity官网2、下载Unity Hub 二、修改Unity Hub配置1、设置Unity Hub中文语言2、修改默认存储目录 三、安装unity编辑器1、点击安装编辑器2、版本选择3、关于版本号4、安装模块选择5、等待下载完成自动安装即可6、追加unity和模块 四、许可证管理专…...
SpringBootWeb 篇-深入了解 SpringBoot + Vue 的前后端分离项目部署上线与 Nginx 配置文件结构
🔥博客主页: 【小扳_-CSDN博客】 ❤感谢大家点赞👍收藏⭐评论✍ 文章目录 1.0 云服务器的准备 2.0 Xshell 和 Xftp 软件 2.1 Xshell 介绍 2.2 Xftp 介绍 3.0 在云服务器进行环境配置 3.1 安装 JDK 3.2 安装 MySQL 3.3 安装 Nginx 4.0 SpringB…...
优化程序中的数据:从代数到向量解
前言 在前文笔者简单介绍了把数据迭代抽象为线性代数,并介绍了空间体、维度等概念。 数据复用 数据复用是一种提高程序执行效率与数据局部性的方法,分为自复用与组复用, 自复用:如果多个迭代访问同一个内存位置,那…...
【Web】2024“国城杯”网络安全挑战大赛决赛题解(全)
最近在忙联通的安全准入测试,很少有时间看CTF了,今晚抽点时间回顾下上周线下的题(期末还没开始复习😢) 感觉做渗透测试一半的时间在和甲方掰扯&水垃圾洞,没啥惊喜感,还是CTF有意思 目录 Mountain ez_zhuawa 图…...
基于ceres优化的3d激光雷达开源算法
以下是一些基于CERES优化的开源激光雷达SLAM或相关算法: (1) LOAM (Lidar Odometry And Mapping) 简介: LOAM是一种经典的激光雷达里程计和建图算法,它通过提取特征点(角点和平面点),利用ICP(Iterative Cl…...
【FAQ】HarmonyOS SDK 闭源开放能力 — Vision Kit(2)
1.问题描述: 人脸活体检测返回上一页App由沉浸式变为非沉浸式多了上下安全区域。 解决方案: 检测结束后需要自己去设置沉浸式配置。 2.问题描述: Vision Kit文字识别是本地识别,还是上传至服务器,由服务器来识别文…...
【LeetCode】726、原子的数量
【LeetCode】726、原子的数量 文章目录 一、递归: 嵌套类问题1.1 递归: 嵌套类问题 二、多语言解法 一、递归: 嵌套类问题 1.1 递归: 嵌套类问题 遇到 ( 括号, 则递归计算子问题 遇到大写字母, 或遇到 ( 括号, 则清算历史, 并开始新的记录 记录由两部分组成: 大写字母开头的 …...
VMware虚拟机三种网络工作模式
vmware为我们提供了三种网络工作模式,它们分别是:Bridged(桥接模式)、NAT(网络地址转换模式)、Host-Only(仅主机模式)。 打开vmware虚拟机,我们可以在选项栏的“编辑”下的“虚拟网络编辑器”中看到VMnet0(桥接模式)、VMnet1(仅主机模式)、VMnet8(NAT模式),那…...
14-zookeeper环境搭建
0、环境 java:1.8zookeeper:3.5.6 1、下载 zookeeper下载点击这里。 2、安装 下载完成后解压,放到你想放的目录里。先看一下zookeeper的目录结构,如下图: 进入conf目录,复制zoo_sample.cfg࿰…...
[搜广推]王树森推荐系统笔记——矩阵补充最近邻查找
视频合集链接 矩阵补充(工业界不常用) 模型结构 embedding可以把 用户ID 或者 物品ID 映射成向量输入用户ID 和 物品ID,输出向量的内积(一个实数),内积越大说明用户对这个物品越感兴趣模型中的两个embed…...
Unity3D * 粒子特效 * Particle System
(基于阿发教程做的重点笔记) 粒子 用于模拟一些流动的,没有形状的物质,例如 液体,烟雾,火焰,爆炸,魔法等效果 去除粒子外框 particle system 粒子发生器,有1个主模块和22个子模块࿰…...
【基础篇】1. JasperSoft Studio编辑器与报表属性介绍
编辑器介绍 Jaspersoft Studio有一个多选项卡编辑器,其中包括三个标签:设计,源代码和预览。 Design:报表设计页面,可以图形化拖拉组件设计报表,打开报表文件的主页面Source:源代码页码ÿ…...
数据结构:算法篇:快速排序;直接插入排序
目录 快速排序 直接插入排序 改良版冒泡排序 快速排序 理解: ①从待排序元素中选定一个基准元素; ②以基准元素将数据分为两部分:(可以将:大于基准元素放左,小于基准元素放右) ③对左半部分…...
WebAPI编程(第一天,第二天)
WebAPI编程(第一天,第二天) day01 - Web APIs 1.1. Web API介绍 1.1.1 API的概念1.1.2 Web API的概念1.1.3 API 和 Web API 总结 1.2. DOM 介绍 1.2.1 什么是DOM1.2.2. DOM树 1.3. 获取元素 1.3.1. 根据ID获取1.3.2. 根据标签名获取元素1.3.…...
查看MySQL存储引擎方法,表操作
修改数据库表存储引擎 show create table dept; show table status from itpux where name s2\G; select * from information_schema.TABLES where table_schemaitpux and table_names3; 查询整个mysql里面存储引擎是innodb/myisam的表 建表时候要写好存储引擎 -- 创建表 -- 表…...
在HarmonyOS ArkTS ArkUI-X 5.0及以上版本中,手势开发全攻略:
在 HarmonyOS 应用开发中,手势交互是连接用户与设备的核心纽带。ArkTS 框架提供了丰富的手势处理能力,既支持点击、长按、拖拽等基础单一手势的精细控制,也能通过多种绑定策略解决父子组件的手势竞争问题。本文将结合官方开发文档,…...
连锁超市冷库节能解决方案:如何实现超市降本增效
在连锁超市冷库运营中,高能耗、设备损耗快、人工管理低效等问题长期困扰企业。御控冷库节能解决方案通过智能控制化霜、按需化霜、实时监控、故障诊断、自动预警、远程控制开关六大核心技术,实现年省电费15%-60%,且不改动原有装备、安装快捷、…...
条件运算符
C中的三目运算符(也称条件运算符,英文:ternary operator)是一种简洁的条件选择语句,语法如下: 条件表达式 ? 表达式1 : 表达式2• 如果“条件表达式”为true,则整个表达式的结果为“表达式1”…...
蓝牙 BLE 扫描面试题大全(2):进阶面试题与实战演练
前文覆盖了 BLE 扫描的基础概念与经典问题蓝牙 BLE 扫描面试题大全(1):从基础到实战的深度解析-CSDN博客,但实际面试中,企业更关注候选人对复杂场景的应对能力(如多设备并发扫描、低功耗与高发现率的平衡)和前沿技术的…...
Python爬虫(二):爬虫完整流程
爬虫完整流程详解(7大核心步骤实战技巧) 一、爬虫完整工作流程 以下是爬虫开发的完整流程,我将结合具体技术点和实战经验展开说明: 1. 目标分析与前期准备 网站技术分析: 使用浏览器开发者工具(F12&…...
【HTML-16】深入理解HTML中的块元素与行内元素
HTML元素根据其显示特性可以分为两大类:块元素(Block-level Elements)和行内元素(Inline Elements)。理解这两者的区别对于构建良好的网页布局至关重要。本文将全面解析这两种元素的特性、区别以及实际应用场景。 1. 块元素(Block-level Elements) 1.1 基本特性 …...
IoT/HCIP实验-3/LiteOS操作系统内核实验(任务、内存、信号量、CMSIS..)
文章目录 概述HelloWorld 工程C/C配置编译器主配置Makefile脚本烧录器主配置运行结果程序调用栈 任务管理实验实验结果osal 系统适配层osal_task_create 其他实验实验源码内存管理实验互斥锁实验信号量实验 CMISIS接口实验还是得JlINKCMSIS 简介LiteOS->CMSIS任务间消息交互…...
精益数据分析(97/126):邮件营销与用户参与度的关键指标优化指南
精益数据分析(97/126):邮件营销与用户参与度的关键指标优化指南 在数字化营销时代,邮件列表效度、用户参与度和网站性能等指标往往决定着创业公司的增长成败。今天,我们将深入解析邮件打开率、网站可用性、页面参与时…...
深入理解Optional:处理空指针异常
1. 使用Optional处理可能为空的集合 在Java开发中,集合判空是一个常见但容易出错的场景。传统方式虽然可行,但存在一些潜在问题: // 传统判空方式 if (!CollectionUtils.isEmpty(userInfoList)) {for (UserInfo userInfo : userInfoList) {…...
Kubernetes 网络模型深度解析:Pod IP 与 Service 的负载均衡机制,Service到底是什么?
Pod IP 的本质与特性 Pod IP 的定位 纯端点地址:Pod IP 是分配给 Pod 网络命名空间的真实 IP 地址(如 10.244.1.2)无特殊名称:在 Kubernetes 中,它通常被称为 “Pod IP” 或 “容器 IP”生命周期:与 Pod …...
