骨骼点检测技术详解:探索机器识别人体动作的奥秘

随着人工智能技术的持续进步,机器不仅能听懂人类语言,识别图片内容,还能通过对人体动作的精准捕捉来实现有效的人体行为监测。这项技术主要集中在智能视频监控,病人监护系统,人机交互,虚拟现实,人体动画,智能家居,智能安防,运动员辅助训练等领域。那么机器是如何识别人体动作的呢?我们可以通过学习HarmonyOS SDK基础视觉服务(Core Vision Kit)提供的骨骼点检测能力来进行探索。

人体骨骼点检测,主要是检测人体的一些关键点,当前,基础视觉服务的骨骼检测技术可支持17个关键点的识别,具体为鼻子,左右眼,左右耳,左右肩,左右肘、左右手腕、左右髋、左右膝、左右脚踝。

系统可以通过检测出的关键点描述人体的骨骼信息,并基于骨骼点信息对人体姿势进行估计,从而识别人体的姿势和动作,比如站立、蹲下、跑步等。骨骼点检测技术除了能实现对人体行为的监控,还可以应用于游戏娱乐领域,通过对人体骨骼点的检测捕捉人体动作姿态,并应用于虚拟模型中,使模型可以活动起来。

开发步骤

开发者可以通过集成HarmonyOS SDK基础视觉服务提供的API来调用骨骼检测功能,具体步骤如下:

1.在使用骨骼点检测时,将实现骨骼点检测相关的类添加至工程。

复制代码
import { skeletonDetection, visionBase } from '@kit.CoreVisionKit';
import { BusinessError } from '@kit.BasicServicesKit';

2.简单配置页面的布局,并在Button组件添加点击事件,拉起图库,选择图片。

复制代码
Button('选择图片')
  .type(ButtonType.Capsule)
  .fontColor(Color.White)
  .alignSelf(ItemAlign.Center)
  .width('80%')
  .margin(10)
  .onClick(() => {
    // 拉起图库,获取图片资源
    this.selectImage();
  })

3.通过图库获取图片资源,将图片转换为PixelMap。

复制代码
private async selectImage() {
  let uri = await this.openPhoto()
  if (uri === undefined) {
    hilog.error(0x0000, 'skeletonDetectSample', "Failed to defined uri.");
  }
  this.loadImage(uri)
}

private openPhoto(): Promise<string> {
  return new Promise<string>((resolve, reject) => {
    let photoPicker: photoAccessHelper.PhotoViewPicker = new photoAccessHelper.PhotoViewPicker();
    photoPicker.select({
      MIMEType: photoAccessHelper.PhotoViewMIMETypes.IMAGE_TYPE, maxSelectNumber: 1
    }).then(res => {
      resolve(res.photoUris[0])
    }).catch((err: BusinessError) => {
      hilog.error(0x0000, 'skeletonDetectSample', `Failed to get photo image uri. code:${err.code},message:${err.message}`);
      reject('')
    })
  })
}

private loadImage(name: string) {
  setTimeout(async () => {
    let fileSource = await fileIo.open(name, fileIo.OpenMode.READ_ONLY);
    this.imageSource = image.createImageSource(fileSource.fd);
    this.chooseImage = await this.imageSource.createPixelMap();
  }, 100)
}

4.实例化Request对象,并传入待检测图片的PixelMap,实现骨骼点检测功能。

复制代码
// 调用骨骼点识别接口
let request: visionBase.Request = {
inputData: { pixelMap: this.chooseImage, }
};
let data: skeletonDetection.SkeletonDetectionResponse = await (await 
skeletonDetection.SkeletonDetector.create()).process(request);

5.(可选)如果需要将结果展示在界面上,可以用下列代码。

复制代码
let data: skeletonDetection.SkeletonDetectionResponse = await (await skeletonDetection.SkeletonDetector.create()).process(request);
let poseJson = JSON.stringify(data);
hilog.info(0x0000, 'skeletonDetectSample', `Succeeded in face detect:${poseJson}`);
this.dataValues = poseJson;

了解更多详情>>

访问基础视觉服务联盟官网

获取骨骼点检测能力的开发指导文档

相关推荐
richard_yuu9 小时前
鸿蒙心理测评模块实战|PHQ-9/GAD7双量表答题、实时计分与结果本地化存储
华为·harmonyos
不爱吃糖的程序媛12 小时前
2026年Electron 鸿蒙PC环境搭建指南
人工智能·华为·harmonyos
nashane12 小时前
HarmonyOS 6学习:长截图功能开发中的滚动拼接与权限处理实战
人工智能·华为·harmonyos
大师兄666813 小时前
从零开发一个 HarmonyOS 输入法——KikaInputMethod 完整拆解
harmonyos·服务卡片·harmonyos6·formkit
Python私教18 小时前
鸿蒙 NEXT 也能接 MCP?用 ArkTS 跑通 AI Agent 工具链
人工智能·华为·harmonyos
Swift社区21 小时前
分布式能力在鸿蒙 PC 上到底怎么用?
分布式·华为·harmonyos
nashane1 天前
HarmonyOS 6学习:外接键盘CapsLock与长截图功能的实战调试与完整解决方案
学习·华为·计算机外设·harmonyos
aqi002 天前
一文理清 HarmonyOS 6.0.2 涵盖的十个升级点
android·华为·harmonyos·鸿蒙·harmony
环信即时通讯云2 天前
环信Flutter UIKit适配鸿蒙实战指南
flutter·华为·harmonyos