写点什么

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

作者:HarmonyOS SDK
  • 2025-01-24
    贵州
  • 本文字数:1417 字

    阅读完需:约 5 分钟

为了提升用户体验,各类应用正通过融合人工智能技术,致力于提供更智能、更高效的服务。应用不仅能通过文字和语音的方式与用户互动,还能深入分析图片内容,为用户提供精准的解决方案。在解析图片之前,应用首先需要准确识别图片中包含的元素,基于此,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;
复制代码


了解更多详情>>


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


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

用户头像

HarmonyOS SDK

关注

HarmonyOS SDK 2022-06-16 加入

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

评论

发布
暂无评论
巧用多目标识别能力,帮助应用实现智能化图片解析_harmoyos_HarmonyOS SDK_InfoQ写作社区