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…

strongswan测试证书生成

环境如下 $ openssl version OpenSSL 3.0.15 3 Sep 2024 (Library: OpenSSL 3.0.15 3 Sep 2024) $ $ openssl version | sed -re s/^OpenSSL ([0-9])\..*/\1/ 3生成证书的目录及证书文件。 testing/hosts/winnetou/etc/ca$ ls bliss ed25519 …

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…

RHEL 7.5 源码安装 mysql-5.7.17 数据库

RHEL 7.5 mysql-5.7.17 源码安装 1、解决依赖包并下载源码包 # yum -y install gcc gcc-c ncurses ncurses-devel bison # wget https://sourceforge.net/projects/boost/files/boost/1.59.0/boost_1_59_0.tar.gz # tar -zxvf boost_1_59_0.tar.gz # mv boost_1_59_0 /usr/loc…

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.执行…

《Vue进阶教程》第十六课:深入完善响应式系统之单例模式

往期内容&#xff1a; 《Vue进阶教程》第五课&#xff1a;ref()函数详解(重点) 《Vue进阶教程》第六课&#xff1a;computed()函数详解(上) 《Vue进阶教程》第七课&#xff1a;computed()函数详解(下) 《Vue进阶教程》第八课&#xff1a;watch()函数的基本使用 《Vue进阶教…

docker run 命令参数

user docker run -it --nameubn18 --gpus all --privilegedtrue --shm-size 8G ubuntu:18.04 /bin/bash-it 是什么意思 4o 在运行 docker run 命令时&#xff0c;-it 是两个选项的组合&#xff0c;用于更好地与容器进行交互&#xff1a; -i 或 --interactive&#xff1a;这个选…

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

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

[python]使用flask-caching缓存数据

简介 Flask-Caching 是 Flask 的一个扩展&#xff0c;为任何 Flask 应用程序添加了对各种后端的缓存支持。它基于 cachelib 运行&#xff0c;并通过统一的 API 支持 werkzeug 的所有原始缓存后端。开发者还可以通过继承 flask_caching.backends.base.BaseCache 类来开发自己的…

测试电脑是否真实多核CPU

测试电脑是否真实多核CPU 在CPU的描述上现在多数看到的是多核心/多内核&#xff0c;看上去就像是多CPU的样子。但核心是有分真实核心和虚拟核心。如果是真实的多核心&#xff0c;多线程是能够并行。如果不是多核心&#xff0c;多线程就只能够并发。 这里就直接采用多线程的应用…

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

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

Go 语言并发实战:利用协程处理多个接口进行数据融合

高效地处理多个数据源并将其整合为有意义的结果是开发中一项重要的任务。Go 语言&#xff0c;以其强大的并发特性&#xff0c;为我们提供了优雅而高效的解决方案。那么我们探讨一下如何利用 Go 语言的协程&#xff0c;同时调用多个接口获取数据&#xff0c;并将这些数据无缝地合…

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

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

leetcode 面试经典 150 题:合并两个有序数组

链接合并两个有序数组题序号88题型数组解题方法1. 双指针法 &#xff1b;2. 合并排序法难道简单熟练度✅✅✅✅✅ 题目 给你两个按 非递减顺序 排列的整数数组 nums1 和 nums2&#xff0c;另有两个整数 m 和 n &#xff0c;分别表示 nums1 和 nums2 中的元素数目。 请你 合并 …