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服务的不断升级,未来会有更多创新的技术应用,值得开发者深入探索。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/diannao/64775.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

nginx-静态资源部署

目录 静态资源概述 静态资源配置指令 listen指令 server_name指令 精确匹配 ​编辑 ​编辑 使用通配符匹配 使用正则表达式匹配 匹配执行顺序 default_server属性 location指令 root指令 alias指令 root与alisa指令的区别 index指令 error_page指令 直接使用 …

时空信息平台架构搭建:基于netty封装TCP通讯模块(IdleStateHandler网络连接监测,处理假死)

文章目录 引言I 异步TCP连接操作II 心跳机制:空闲检测(读空闲和写空闲)基于Netty的IdleStateHandler类实现心跳机制(网络连接监测)常规的处理假死健壮性的处理假死方案获取心跳指令引言 基于netty实现TCP客户端:封装断线重连、连接保持 https://blog.csdn.net/z92911896…

Linux之RPM和YUM命令

一、RPM命令 1、介绍 RPM(RedHat Package Manager).,RedHat软件包管理工具&#xff0c;类似windows里面的setup,exe是Liux这系列操作系统里而的打包安装工具。 RPMI包的名称格式&#xff1a; Apache-1.3.23-11.i386.rpm “apache’” 软件名称“1.3.23-11” 软件的版本号&am…

aosp15 - Activity生命周期切换

本文探查的是&#xff0c;从App冷启动后到MainActivity生命周期切换的系统实现。 调试步骤 在com.android.server.wm.RootWindowContainer#attachApplication 方法下断点&#xff0c;为了attach目标进程在com.android.server.wm.ActivityTaskSupervisor#realStartActivityLock…

【漫话机器学习系列】017.大O算法(Big-O Notation)

大 O 表示法&#xff08;Big-O Notation&#xff09; 大 O 表示法是一种用于描述算法复杂性的数学符号&#xff0c;主要用于衡量算法的效率&#xff0c;特别是随着输入规模增大时算法的运行时间或占用空间的增长趋势。 基本概念 时间复杂度 描述算法所需的运行时间如何随输入数…

ensp 基于端口安全的财务部网络组建

ARP IP数据包通过以太网发送&#xff0c;但以太网设备并不能识别IP地址&#xff0c;它们是以MAC地址传输的。因此&#xff0c;必须把IP目的地址转换成MAC目的地址。在以太网中&#xff0c;一个主机要和另一个主机进行直接通信&#xff0c;必须要知道目标主机的MAC地址。 ARP&…

在 Ubuntu 上安装 Muduo 网络库的详细指南

在 Ubuntu 上安装 Muduo 网络库的详细指南 首先一份好的安装教程是非常重要的 C muduo网络库知识分享01 - Linux平台下muduo网络库源码编译安装-CSDN博客 像这篇文章就和shit一样&#xff0c;安装到2%一定会卡住&#xff0c;如果你不幸用了这个那真是遭老罪了 环境&#xf…

Idean 处理一个项目引用另外一个项目jar 但jar版本低的问题

当在idea中一个module A引用另外一个项目B的jar&#xff0c;但是从私服仓库中拉下的jar版本比较低导致编译不通过时&#xff0c;可以把项目B拉下来&#xff0c;重新编译打包jar跟新到本地的仓库 选中右边菜单的Maven 选中对应的项目B-》Lifecycle->双击 install也可以按住c…

Windows下安装Rabbit MQ

一、安装环境&#xff1a; 系统&#xff1a;windows11; 环境配置安装&#xff1a;otp_win64_25.3.2.14.exe&#xff08;erlang类库&#xff09;&#xff1b; 服务应用安装&#xff1a;rabbitmq-server-3.12.4.exe&#xff1b; 二、erlang环境&#xff1a; 1.执行…

生态学研究中,森林生态系统的结构、功能与稳定性是核心研究

在生态学研究中&#xff0c;森林生态系统的结构、功能与稳定性是核心研究内容之一。这些方面不仅关系到森林动态变化和物种多样性&#xff0c;还直接影响森林提供的生态服务功能及其应对环境变化的能力。森林生态系统的结构主要包括物种组成、树种多样性、树木的空间分布与密度…

基于UNITY3D的照片墙演示项目技术分享

unity实现超大图片墙演示,由于拥有海量图片&#xff0c;使用了CPU 多线程&#xff0c;unity dots技术&#xff0c;图片组成文字部分&#xff0c;使用了点阵图技术&#xff0c;提取文字像素。 &#xff08;关于点阵介绍&#xff09; 点阵字体是把每一个字符都分成1616或2424个点…

设计模式-访问者设计模式

介绍 访问者模式&#xff08;Visitor&#xff09;&#xff0c;表示一个作用于某对象结构中的各元素的操作&#xff0c;它使你可以在不改变个元素的类的前提下定义作用于这些元素的新操作。 问题&#xff1a;在一个机构里面有两种员工&#xff0c;1.Teacher 2.Engineer 员…

ISO/IEC 25010:2023 系统和软件的质量模型(产品质量模型)

本文是对ISO/IEC 25010 2023年底第2版&#xff1a;系统和软件工程-系统和软件质量要求与评估 (SQuaRE)-产品质量模型一文的转载&#xff0c;此外还参考了ISO/IEC 25019:2023(en) Systems and software engineering — Systems and software Quality Requirements and Evaluatio…

【零基础保姆级教程】制作自己的数据集——Labelimg的安装与使用及常见的报错解决方法

1.是什么 LabelImg 是一个图形化的图像标注工具&#xff0c;主要用于机器学习和计算机视觉领域中的数据预处理。它是由 GitHub 用户 tzutalin 开发的开源项目&#xff0c;基于 Python 和 Qt 框架编写。LabelImg 允许用户手动为图像添加边界框&#xff08;bounding boxes&#…

【java基础系列】实现数字的首位交换算法

在java中&#xff0c;手写实现一个数字的首位交换算法实现 实现效果 实现代码 核心业务代码 public static void main(String[] args) {int[] arr {1,2,3,4,5};int temp arr[0];for (int i 0; i < arr.length; i) {System.out.print(arr[i]);}System.out.println(&quo…

【java面向对象编程】第七弹----Object类、类变量与类方法

笔上得来终觉浅,绝知此事要躬行 &#x1f525; 个人主页&#xff1a;星云爱编程 &#x1f525; 所属专栏&#xff1a;javase &#x1f337;追光的人&#xff0c;终会万丈光芒 &#x1f389;欢迎大家点赞&#x1f44d;评论&#x1f4dd;收藏⭐文章 目录 一、Object类 1.1equa…

GO--堆(have TODO)

堆 堆&#xff08;Heap&#xff09;是一种特殊的数据结构。它是一棵完全二叉树&#xff08;完全二叉树是指除了最后一层外&#xff0c;每一层上的节点数都是满的&#xff0c;并且最后一层的节点都集中在左边&#xff09;&#xff0c;结放在数组&#xff08;切片&#xff09;中…

java开发入门学习五-流程控制

流程控制语句 if&#xff0c; if...else&#xff0c; if..else if..else 与前端相同 略 switch case 与前端不同的是case不能使用表达式&#xff0c;使用表达式会报错 class TestSwitch {public static void main(String[] args) {// switch 表达式只能是特定的数据类型…

豆包MarsCode测评:编程效率再提升

豆包MarsCode测评&#xff1a;编程效率再提升 本文正在参与豆包MarsCode AI 编程体验家活动 随着人工智能技术的发展&#xff0c;编程的方式也在悄然发生变化。最近&#xff0c;豆包推出的 AI 编程工具 MarsCode 在开发者社区引发了不小的关注。这是一款支持多种主流编程语言…

FFmpeg 框架简介和文件解复用

文章目录 ffmpeg框架简介libavformat库libavcodec库libavdevice库 复用&#xff08;muxers&#xff09;和解复用&#xff08;demuxers&#xff09;容器格式FLVScript Tag Data结构&#xff08;脚本类型、帧类型&#xff09;Audio Tag Data结构&#xff08;音频Tag&#xff09;V…