写点什么

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

作者:HarmonyOS SDK
  • 2025-02-13
    贵州
  • 本文字数:1578 字

    阅读完需:约 5 分钟

随着人工智能技术的持续进步,机器不仅能听懂人类语言,识别图片内容,还能通过对人体动作的精准捕捉来实现有效的人体行为监测。这项技术主要集中在智能视频监控,病人监护系统,人机交互,虚拟现实,人体动画,智能家居,智能安防,运动员辅助训练等领域。那么机器是如何识别人体动作的呢?我们可以通过学习 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;
复制代码


了解更多详情>>


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


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

用户头像

HarmonyOS SDK

关注

HarmonyOS SDK 2022-06-16 加入

HarmonyOS SDK通过将HarmonyOS系统级能力对外开放,支撑开发者高效打造更纯净、更智能、更精致、更易用的鸿蒙原生应用,和开发者共同成长。

评论

发布
暂无评论
骨骼点检测技术详解:探索机器识别人体动作的奥秘_harmoyos_HarmonyOS SDK_InfoQ写作社区