鸿蒙AI功能开发【hiai引擎框架-骨骼点识别】 基础视觉服务-骨骼点检查

介绍

本示例展示了使用hiai引擎框架提供的骨骼点识别功能。

本示例模拟了在应用里,选择一张人物全身图片,识别骨骼点。

需要使用hiai引擎框架多目标识别接口@hms.ai.vision.skeletonDetection。

效果预览

使用说明:

  1. 在手机的主屏幕,点击"poseDetectDemo",启动应用。
  2. 点击"选择图片"按钮,用户可以在图库中选择图片,或者通过相机拍照。
  3. 点击"开始骨骼点识别"按钮,识别照片骨骼点信息,结果通过文本展示。

具体实现

本示例展示的控件在@hms.ai.vision.skeletonDetection.d.ets定义了骨骼点识别API:

复制代码
process(request: visionBase.Request): Promise<SkeletonDetectionResponse>;

业务使用时,需要先进行import导入skeletonDetection 调用通用多目标识别接口,并传入想要识别的图片,接收处理返回的结果(文字信息)。参考:

复制代码
import { image } from '@kit.ImageKit';
import { hilog } from '@kit.PerformanceAnalysisKit';
import { BusinessError } from '@kit.BasicServicesKit';
import { picker, fileIo } from '@kit.CoreFileKit';
import skeletonDetection from '@hms.ai.vision.skeletonDetection';
import visionBase from '@hms.ai.vision.visionBase';

@Entry
@Component
struct Index {
  private imageSource: image.ImageSource | undefined = undefined;
  @State chooseImage: PixelMap | undefined = undefined
  @State dataValues: string = ''

  build() {
    Column() {
      Image(this.chooseImage)
        .objectFit(ImageFit.Fill)
        .height('60%')


      Scroll() {
        Text(this.dataValues)
          .copyOption(CopyOptions.LocalDevice)
          .margin(10)
          .width('60%')
      }
      .height('15%')
      .scrollable(ScrollDirection.Vertical)

      Button('选择图片')
        .type(ButtonType.Capsule)
        .fontColor(Color.White)
        .alignSelf(ItemAlign.Center)
        .width('80%')
        .margin(10)
        .onClick(() => {
          // 拉起图库
          this.selectImage()
        })

      Button('开始骨骼点识别')
        .type(ButtonType.Capsule)
        .fontColor(Color.White)
        .alignSelf(ItemAlign.Center)
        .width('80%')
        .margin(10)
        .onClick(async () => {
          if(!this.chooseImage) {
            hilog.error(0x0000, 'objectDetectSample', `Failed to choose image. chooseImage: ${this.chooseImage}`);
            return;
          }
          // 调用骨骼点识别接口
          let request: visionBase.Request = {
            inputData: { pixelMap: this.chooseImage, }
          };
          let data: skeletonDetection.SkeletonDetectionResponse = await (await skeletonDetection.SkeletonDetector.create()).process(request);
          let poseJson = JSON.stringify(data);
          hilog.info(0x0000, 'objectDetectSample', `Succeeded in face detect:${poseJson}`);
          this.dataValues = poseJson;
        })
    }
    .width('100%')
    .height('100%')
    .justifyContent(FlexAlign.Center)
  }

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

  private openPhoto(): Promise<string> {
    return new Promise<string>((resolve, reject) => {
      let photoPicker = new picker.PhotoViewPicker()
      photoPicker.select({
        MIMEType: picker.PhotoViewMIMETypes.IMAGE_TYPE, maxSelectNumber: 1
      }).then(res => {
        resolve(res.photoUris[0])
      }).catch((err: BusinessError) => {
        hilog.error(0x0000, 'objectDetectSample', `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)
  }
}

以上就是本篇文章所带来的鸿蒙开发中一小部分技术讲解;想要学习完整的鸿蒙全栈技术。可以在结尾找我可全部拿到!

下面是鸿蒙的完整学习路线 ,展示如下:

除此之外,根据这个学习鸿蒙全栈学习路线,也附带一整套完整的学习【文档+视频】,内容包含如下

内容包含了:(ArkTS、ArkUI、Stage模型、多端部署、分布式应用开发、音频、视频、WebGL、OpenHarmony多媒体技术、Napi组件、OpenHarmony内核、鸿蒙南向开发、鸿蒙项目实战)等技术知识点。帮助大家在学习鸿蒙路上快速成长!

鸿蒙【北向应用开发+南向系统层开发】文档

鸿蒙【基础+实战项目】视频

鸿蒙面经

为了避免大家在学习过程中产生更多的时间成本,对比我把以上内容全部放在了↓↓↓想要的可以自拿喔!谢谢大家观看!

相关推荐
user-猴子1 分钟前
不会写代码,做小游戏教程
人工智能·游戏
微三云 - 廖会灵 (私域系统开发)13 分钟前
电商推荐系统从0到1:协同过滤+深度学习双塔模型的架构演进与实时排序实践
人工智能·深度学习·架构
乔粒科研工坊15 分钟前
文献解读 |“三虚拟”上线- AI 虚拟细胞爆火-综述
人工智能·文献阅读·虚拟细胞·文献分享·虚拟敲除
jinxindeep16 分钟前
LingBot-Vision:以边界为中心的视觉预训练新范式,驱动密集空间感知与深度估计新突破
人工智能
Java编程爱好者24 分钟前
一种适合程序员的 Agent 协作方式的实践
人工智能
不才难以繁此生25 分钟前
NavPathStack 返回错页怎么排查:中式美食详情页从搜索、收藏和推荐进入怎么回到原处
harmonyos·arkts·arkui·中式美食·navpathstack
甜味弥漫30 分钟前
从痛点出发,彻底搞懂 RAG:为什么 AI 不会"查资料",以及如何让大模型拥有企业知识库
人工智能
甜味弥漫34 分钟前
MCP 是什么?为什么 AI Agent 需要 MCP?
人工智能
weixin_4462608535 分钟前
HumanForge:基于多智能体伪造推理的以人为中心深度伪造视频基准
人工智能·音视频
2401_8595062444 分钟前
玉石加工全链路技术变革:五大维度拆解材质改性、精密雕刻与智能溯源
大数据·人工智能