HarmonyOS NEXT 技术实践-基于基础视觉服务实现骨骼点识别

news/2024/12/23 22:27:00 标签: harmonyos, pytorch, 深度学习, 华为

本示例展示了如何在HarmonyOS Next中实现基于基础视觉服务的骨骼点识别功能。骨骼点识别是计算机视觉中的一项重要技术,广泛应用于运动分析、健身监控和增强现实等领域。通过使用HarmonyOS Next提供的视觉API,开发者能够轻松地对人物图像进行骨骼点检测,并返回准确的骨骼点信息。本文将详细介绍项目的实现过程,包括如何调用骨骼点检测API、设计应用界面,以及如何展示识别结果。通过本示例,开发者将深入了解如何在HarmonyOS Next环境中集成视觉识别技术,并实现图像中的骨骼点自动识别和分析功能。
在这里插入图片描述


一、项目背景与目标

1. 框架介绍

HarmonyOS Next提供了一整套的视觉服务框架,使开发者可以轻松实现图像识别、处理等功能。特别是基础视觉服务,它为开发者提供了丰富的API接口,支持包括骨骼点识别、物体检测、人脸识别等多种图像分析任务。

在智能设备和应用中,骨骼点识别功能被广泛应用于运动分析、健身跟踪、虚拟人物建模等领域。目前,HarmonyOS Next的骨骼点识别功能支持17个关键点的识别,具体为鼻子,左右眼,左右耳,左右肩,左右肘、左右手腕、左右髋、左右膝、左右脚踝。

在这里插入图片描述

本示例使用了 基础视觉服务 提供的 骨骼点识别 功能,结合HarmonyOS Next的开发平台,演示如何通过图像中的骨骼点检测,实现人物的骨骼结构识别和展示。开发者可以通过这个示例,掌握如何在HarmonyOS Next应用中集成并调用视觉识别API。

2. 项目目标

本项目旨在展示如何使用HarmonyOS Next基础视觉服务进行骨骼点识别,帮助开发者快速了解如何集成骨骼点识别功能。通过实现该功能,用户可以在应用中上传一张人物全身照片,系统自动识别并返回图片中的骨骼点信息。

具体目标如下:

  • 实现骨骼点识别API的调用。
  • 用户可以上传图片或拍照,应用识别人物骨骼点并展示。
  • 骨骼点信息通过文本形式展示,帮助用户理解和分析图像中的人物结构。

二、项目实现

1. 项目目录结构

以下是本项目的目录结构:

├─ entry/src/main/ets
│  ├─ entryability
│  │  └─ EntryAbility.ets            // 程序入口
│  ├─ entrybackupability
│  │  └─ EntryBackupAbility.ets
│  └─ pages
│     └─ Index.ets                   // 应用主界面
└─ entry/src/main/resources          // 资源文件目录
  • EntryAbility.ets:程序的入口文件,负责应用初始化和界面设置。
  • Index.ets:应用的主界面,用户在该界面中选择图片并启动骨骼点识别。
  • resources目录:存放资源文件,如图片、图标等。

2. 项目实现

本示例使用的核心功能是调用骨骼点识别接口,该接口在@hms.ai.vision.skeletonDetection.d.ts中定义,开发者可以通过该API处理上传的图片,获取人物的骨骼点信息。

  1. 导入骨骼点检测接口
    在项目中需要先导入骨骼点检测的API:

    import { skeletonDetection } from '@hms.ai.vision.skeletonDetection';
    
  2. 选择图片或拍照
    用户通过点击按钮选择本地图库中的图片,或直接使用相机拍摄一张新的图片。

  3. 调用骨骼点识别接口
    使用process方法调用骨骼点识别服务:

    skeletonDetection.process({
      uri: 'imageUri'  // 图片的路径或URI
    }).then(response => {
      // 处理返回的识别结果
      console.log('骨骼点识别结果:', response);
    }).catch(error => {
      console.error('骨骼点识别失败:', error);
    });
    
  4. 展示结果
    将识别到的骨骼点信息通过文本形式显示在应用界面上,帮助用户查看识别结果。

3. 注意事项

  • 图片格式:确保上传的图片格式符合基础视觉服务的要求,一般支持JPG、PNG等常见格式。输入图像具有合适成像的质量(建议720p以上),100px<高度<10000px,100px<宽度<10000px,高宽比例建议5:1以下,接近手机屏幕高宽比例为宜。
  • API限制:该骨骼点识别API可能会对处理的图片大小、分辨率等有所限制,开发者需要提前了解相关文档。
  • 权限管理:在使用相机或访问图库时,需要合理配置相应的权限,如CAMERAREAD_EXTERNAL_STORAGE等。

三、核心代码解析

1. 导入必要的依赖

Index.ets文件中,我们首先导入骨骼点识别API和其他必要的模块:

import { skeletonDetection } from '@hms.ai.vision.skeletonDetection';
import { ImagePicker, Camera } from '@ohos.multimedia.media';

2. 图片选择与拍照

我们实现了两个功能:从图库选择图片和直接通过相机拍摄图片。以下是从图库选择图片的代码:

const selectImage = () => {
  ImagePicker.pickImage().then(uri => {
    // 获取到图片URI
    startSkeletonDetection(uri);
  }).catch(error => {
    console.error('选择图片失败:', error);
  });
};

3. 调用骨骼点识别接口

当图片选择完成后,调用骨骼点识别接口进行处理:

const startSkeletonDetection = (imageUri) => {
  skeletonDetection.process({
    uri: imageUri
  }).then(response => {
    displaySkeletonPoints(response);
  }).catch(error => {
    console.error('骨骼点识别失败:', error);
  });
};

4. 显示识别结果

识别结果以文本的形式展示:

const displaySkeletonPoints = (response) => {
  const points = response.skeletonPoints;  // 假设API返回的结果包含骨骼点数组
  let resultText = '识别到的骨骼点信息:\n';
  points.forEach((point, index) => {
    resultText += `${index + 1}: (${point.x}, ${point.y})\n`;
  });
  console.log(resultText);
};

四、效果预览

在应用启动后,用户可以选择图片或者拍摄一张照片,点击“开始骨骼点识别”后,应用会开始识别图片中的骨骼点并在界面上以文本形式展示结果。以下是效果预览:

  1. 选择图片:用户选择图片或拍照。

在这里插入图片描述

  1. 识别过程:点击“开始骨骼点识别”后,应用将处理图片并进行骨骼点识别。

在这里插入图片描述

  1. 结果展示:识别到的骨骼点信息通过文本在界面上展示。

在这里插入图片描述


五、总结

通过本项目的实现,我们学习了如何利用HarmonyOS Next中的基础视觉服务,进行骨骼点识别功能的开发。通过调用@hms.ai.vision.skeletonDetection API,开发者可以轻松实现对人物全身图像的骨骼点检测,为智能健身、运动分析、虚拟现实等应用提供技术支持。

本示例展示了如何集成图像识别API,如何获取图片并传递给识别服务,最终将结果展示给用户。开发者可以基于此示例进一步扩展功能,如对不同类型的图像进行处理、优化识别精度、结合其他AI能力等,提升应用的智能化水平。


http://www.niftyadmin.cn/n/5797074.html

相关文章

反无人机防御系统概述!

一、定义与工作原理 反无人机防御系统是指利用频谱侦测探测、雷达探测、无线电干扰压制等技术实现对非法入侵无人机进行管控防御的系统。它采用多种技术手段&#xff0c;如雷达、光电传感器、红外线探测器等&#xff0c;通过实时监测无人机的位置、速度、航迹、姿态等信息&…

5G -- 发展与演进

概述&#xff1a; 5G将通过支持增强移动宽带&#xff08;eMBB&#xff09;、低时延高可靠连接&#xff08;uRLLC&#xff09;和海量机器连接&#xff08;mMTC&#xff09;三大场景&#xff0c;以满足网络能力极端化、网络能力差异化以及网络融合的多样化的业务需求&#xff0c…

【更新】Docker新手入门教程2:在Windows系统通过compose创建多个mysql镜像并配置应用

文章目录 前言一、运行Docker init生成docker配置文件二、修改创建镜像的配置文件1、添加镜像挂载点 三、【拉取镜像】四、生成Docker 镜像查看生成的镜像 五、修改Compose配置文件3、配置Mysql六、生成Docker容器七、检查容器创建状态总结 前言 在window下通过Docker创建mysq…

使用Electron获取用户信息,监听程序打开,用户退出连接关闭程序【全代码,有图】

使用Electron获取用户信息&#xff0c;监听程序打开&#xff0c;用户退出连接关闭程序【全代码&#xff0c;有图】 效果图 如有其他操作可在代码中自己添加 main.js const { app, BrowserWindow, ipcMain } require(electron); const path require(node:path); const os…

【计算机视觉基础CV-图像分类】03-深度学习图像分类实战:鲜花数据集加载与预处理详解

本文将深入介绍鲜花分类数据集的加载与处理方式&#xff0c;同时详细解释代码的每一步骤并给出更丰富的实践建议和拓展思路。以实用为导向&#xff0c;为读者提供从数据组织、预处理、加载到可视化展示的完整过程&#xff0c;并为后续模型训练打下基础。 前言 在计算机视觉的深…

基于单片机的步进电机控制系统的设计研究

摘要 :随着我国社会经济结构的不断优化与升级,加工制造工业得到了长足发展 。 加工制造工业体系的日益成熟,使得步进电机应用的范围越来越广泛,逐渐成为工业生产与社会生活中必不可少的工业组成。 因此如何提升步进电机的性能、 实现步进电机控制系统的科学设计,就成为现阶…

Docker 部署机器学习模型

1.编写机器学习代码 &#xff08;1&#xff09;新建一个 mlmodel.py import numpy as np import pandas as pd from sklearn.datasets import load_iris from sklearn.model_selection import train_test_split from sklearn.linear_model import LogisticRegression from sk…

127、SQLSERVE中union all 和union的使用场景

使用&#xff1a;在 SQL Server 中&#xff0c;UNION 和 UNION ALL 是用于合并两个或多个 SELECT 查询结果的操作符。两者区别union all 会去重&#xff0c;union 不会去重例子&#xff1a; 两张表&#xff1a;stu:stu_id,name emplyee:em_id,name 需求1&#xff1a;sql实…