HarmonyOS NEXT 技术实践-基于基础视觉服务的多目标识别

news/2024/12/24 2:38:15 标签: harmonyos, 华为

在智能手机、平板和其他智能设备日益智能化的今天,视觉识别技术成为提升用户体验和智能交互的重要手段。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.niftyadmin.cn/n/5797230.html

相关文章

sh cmake-linux.sh -- --skip-license --prefix = $MY_INSTALL_DIR

本文来自天工AI --------- 命令用于安装CMake的脚本&#xff0c;其中--skip-license参数表示跳过许可协议的显示&#xff0c;--prefix参数指定了CMake的安装目录。$MYINSTALLDIR是一个环境变量&#xff0c;应该在运行命令之前设置为您想要安装CMake的目录。 -------- sh xx…

git推送本地仓库到远程(Gitee)

目录 一、注册创建库 二、创建仓库 三、推送本地仓库到远程 1.修改本地仓库用户名和邮箱 2.本地库关联远程仓库 3.拉取远程仓库的文件 4.推送本地库的文件 5.查看远程仓库 四、远程分支查看 1.查看远程分支 2.修改test.txt文件 一、注册创建库 Gitee官网&#xff1…

SSH用户认证

SSH用户认证最基本的两种方式是密码认证和密钥认证。密码认证是将自己的用户名和密码发送给服务器进行认证&#xff0c;这种方式比较简单&#xff0c;且每次登录都需要输入用户名和密码。密钥认证使用公钥私钥对进行身份验证&#xff0c;实现安全的免密登录&#xff0c;是一种广…

《开启微服务之旅:Spring Boot Web开发举例》(二)

Springboot开发企业信息管理系统 引入资源 1.创建项目引入页面原型 2.引入maven的依赖和starters <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId></dependency><d…

React 底部加载组件(基于antd)

底部加载组件的意义在于提供一种流畅的用户体验&#xff0c;以便在用户滚动到页面底部时自动加载更多内容。这样可以让用户无需离开当前页面&#xff0c;就能够无缝地浏览更多的内容.通过底部加载组件&#xff0c;可以分批加载页面内容&#xff0c;减少一次性加载大量数据对页面…

Java重要面试名词整理(一):MySQLJVMTomcat

文章目录 MySQL篇联合索引最左前缀法则索引下推并发事务处理带来的问题事务隔离级别Read Uncommitted&#xff08;读取未提交内容&#xff09;Read Committed&#xff08;读取提交内容 RC&#xff09;Repeatable Read&#xff08;可重读 RR&#xff09;Serializable&#xff08…

重塑医院挂号体验:SSM 与 Vue 搭建的预约系统设计与实现

4系统概要设计 4.1概述 本系统采用B/S结构(Browser/Server,浏览器/服务器结构)和基于Web服务两种模式&#xff0c;是一个适用于Internet环境下的模型结构。只要用户能连上Internet,便可以在任何时间、任何地点使用。系统工作原理图如图4-1所示&#xff1a; 图4-1系统工作原理…

win11用一条命令给anaconda环境安装GPU版本pytorch,并检查是否为GPU版本

不需要安装cudatookit和cudnn&#xff0c;只要有显卡就有cuda&#xff0c;安装tenserflow-gpu的时候需要额外安装的是cudatookit和cudnn 用一条命令即可 打开官网&#xff1a; Start Locally | PyTorch 选择安装版本 运行命令即可 pip3 install torch torchvision torchaud…