巧用多目标识别能力,帮助应用实现智能化图片解析

为了提升用户体验,各类应用正通过融合人工智能技术,致力于提供更智能、更高效的服务。应用不仅能通过文字和语音的方式与用户互动,还能深入分析图片内容,为用户提供精准的解决方案。

在解析图片之前,应用首先需要准确识别图片中包含的元素,基于此,HarmonyOS SDK 基础视觉服务(Core Vision Kit)提供了多目标识别功能,可以同时检测出给定图片中的各种物体,包括风景、动物、植物、建筑、树、人脸、表格、文本等位置,并框选出物体,在有需要的情况下,也可将识别结果展示在界面上。

多目标识别功能是一项应用范围较为广泛的基础能力,在搜索引擎应用场景中,应用可借助该能力实现图像的搜索和分类;在AR游戏中,多目标识别功能可以识别出摄像头前的玩家,从而与虚拟游戏内容产生互动;此外,多目标识别功能还可应用于安防监控系统中,通过识别行人、车辆等等目标进行安全分析和紧急响应。

开发步骤

1.在使用多目标识别时,将实现多目标识别相关的类添加至工程。

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

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, 'objectDetectSample', "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, '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)

4.实例化Request对象,并传入待检测图片的PixelMap,调用多目标识别的实现多目标识别功能。

复制代码
// 调用多目标检测接口
let request: visionBase.Request = {
  inputData: { pixelMap: this.chooseImage }
};
let data: objectDetection.ObjectDetectionResponse = await (await objectDetection.ObjectDetector.create()).process(request);

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

复制代码
let objectJson = JSON.stringify(data);
hilog.info(0x0000, 'objectDetectSample', `Succeeded in face detect:${objectJson}`);
this.dataValues = objectJson;

了解更多详情>>

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

获取多目标识别开发指导文档

相关推荐
一只大侠的侠25 分钟前
React Native开源鸿蒙跨平台训练营 Day16自定义 useForm 高性能验证
flutter·开源·harmonyos
早點睡3901 小时前
高级进阶 React Native 鸿蒙跨平台开发:@react-native-community-slider 滑块组件
react native·react.js·harmonyos
一只大侠的侠2 小时前
Flutter开源鸿蒙跨平台训练营 Day11从零开发商品详情页面
flutter·开源·harmonyos
一只大侠的侠2 小时前
React Native开源鸿蒙跨平台训练营 Day18自定义useForm表单管理实战实现
flutter·开源·harmonyos
一只大侠的侠2 小时前
React Native开源鸿蒙跨平台训练营 Day20自定义 useValidator 实现高性能表单验证
flutter·开源·harmonyos
听麟3 小时前
HarmonyOS 6.0+ 跨端智慧政务服务平台开发实战:多端协同办理与电子证照管理落地
笔记·华为·wpf·音视频·harmonyos·政务
前端世界3 小时前
从单设备到多设备协同:鸿蒙分布式计算框架原理与实战解析
华为·harmonyos
一只大侠的侠4 小时前
Flutter开源鸿蒙跨平台训练营 Day12从零开发通用型登录页面
flutter·开源·harmonyos
前端不太难5 小时前
HarmonyOS App 工程深水区:从能跑到可控
华为·状态模式·harmonyos
万少5 小时前
端云一体 一天开发的元服务-奇趣故事匣经验分享
前端·ai编程·harmonyos