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的表 建表时候要写好存储引擎 -- 创建表 -- 表…...
RestClient
什么是RestClient RestClient 是 Elasticsearch 官方提供的 Java 低级 REST 客户端,它允许HTTP与Elasticsearch 集群通信,而无需处理 JSON 序列化/反序列化等底层细节。它是 Elasticsearch Java API 客户端的基础。 RestClient 主要特点 轻量级ÿ…...

【Python】 -- 趣味代码 - 小恐龙游戏
文章目录 文章目录 00 小恐龙游戏程序设计框架代码结构和功能游戏流程总结01 小恐龙游戏程序设计02 百度网盘地址00 小恐龙游戏程序设计框架 这段代码是一个基于 Pygame 的简易跑酷游戏的完整实现,玩家控制一个角色(龙)躲避障碍物(仙人掌和乌鸦)。以下是代码的详细介绍:…...
设计模式和设计原则回顾
设计模式和设计原则回顾 23种设计模式是设计原则的完美体现,设计原则设计原则是设计模式的理论基石, 设计模式 在经典的设计模式分类中(如《设计模式:可复用面向对象软件的基础》一书中),总共有23种设计模式,分为三大类: 一、创建型模式(5种) 1. 单例模式(Sing…...

Lombok 的 @Data 注解失效,未生成 getter/setter 方法引发的HTTP 406 错误
HTTP 状态码 406 (Not Acceptable) 和 500 (Internal Server Error) 是两类完全不同的错误,它们的含义、原因和解决方法都有显著区别。以下是详细对比: 1. HTTP 406 (Not Acceptable) 含义: 客户端请求的内容类型与服务器支持的内容类型不匹…...

家政维修平台实战20:权限设计
目录 1 获取工人信息2 搭建工人入口3 权限判断总结 目前我们已经搭建好了基础的用户体系,主要是分成几个表,用户表我们是记录用户的基础信息,包括手机、昵称、头像。而工人和员工各有各的表。那么就有一个问题,不同的角色…...

用docker来安装部署freeswitch记录
今天刚才测试一个callcenter的项目,所以尝试安装freeswitch 1、使用轩辕镜像 - 中国开发者首选的专业 Docker 镜像加速服务平台 编辑下面/etc/docker/daemon.json文件为 {"registry-mirrors": ["https://docker.xuanyuan.me"] }同时可以进入轩…...

tree 树组件大数据卡顿问题优化
问题背景 项目中有用到树组件用来做文件目录,但是由于这个树组件的节点越来越多,导致页面在滚动这个树组件的时候浏览器就很容易卡死。这种问题基本上都是因为dom节点太多,导致的浏览器卡顿,这里很明显就需要用到虚拟列表的技术&…...

HarmonyOS运动开发:如何用mpchart绘制运动配速图表
##鸿蒙核心技术##运动开发##Sensor Service Kit(传感器服务)# 前言 在运动类应用中,运动数据的可视化是提升用户体验的重要环节。通过直观的图表展示运动过程中的关键数据,如配速、距离、卡路里消耗等,用户可以更清晰…...
libfmt: 现代C++的格式化工具库介绍与酷炫功能
libfmt: 现代C的格式化工具库介绍与酷炫功能 libfmt 是一个开源的C格式化库,提供了高效、安全的文本格式化功能,是C20中引入的std::format的基础实现。它比传统的printf和iostream更安全、更灵活、性能更好。 基本介绍 主要特点 类型安全:…...
十九、【用户管理与权限 - 篇一】后端基础:用户列表与角色模型的初步构建
【用户管理与权限 - 篇一】后端基础:用户列表与角色模型的初步构建 前言准备工作第一部分:回顾 Django 内置的 `User` 模型第二部分:设计并创建 `Role` 和 `UserProfile` 模型第三部分:创建 Serializers第四部分:创建 ViewSets第五部分:注册 API 路由第六部分:后端初步测…...