Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >自学记录鸿蒙API 13:实现多目标识别Object Detection

自学记录鸿蒙API 13:实现多目标识别Object Detection

原创
作者头像
李游Leo
发布于 2024-12-29 14:23:15
发布于 2024-12-29 14:23:15
11900
代码可运行
举报
文章被收录于专栏:我的鸿蒙之旅我的鸿蒙之旅
运行总次数:0
代码可运行

起步:什么叫多目标识别?

无论是生活中的动物识别、智能相册中的场景分类,还是工业领域的检测任务,都能看到多目标识别的身影。这次,我决定通过学习HarmonyOS最新的Object Detection API(API 13),一步步探索如何实现多目标识别应用,并通过亲手完成一个完整的项目来验证自己的学习成果。


先思考

在深入学习之前,我认真思考了这一技术的潜在应用场景:

  1. 智能图像分类:对用户拍摄的图片进行智能分类,比如区分风景、建筑、人物等。
  2. 工业检测:识别生产线上产品的质量问题,如瑕疵或异常。
  3. 无人零售:分析购物场景中的商品分布,提高商品推荐精度。
  4. 交通监控:检测车辆和行人,实现交通状况分析。
  5. AR互动:结合多目标识别技术,实现与周围物体的实时交互。

你还别说,我认识到多目标识别的广阔潜力,同时也促使我更加系统地理解其背后的实现逻辑。


第一阶段:了解Object Detection API的功能

HarmonyOS的Object Detection API提供了以下能力:

  • 目标类别识别:识别图像中目标的类别,如风景、动物、植物等。
  • 边界框生成:为识别的目标生成精确的边界框,便于后续处理。
  • 高精度置信度:为每个目标提供置信度分数,衡量识别结果的可靠性。
  • 多目标支持:能够在单张图片中同时检测多个目标对象。

这种强大的功能正是我此次学习和实践的重点。


第二阶段:项目初始化与权限配置

为了确保多目标识别服务能够正常运行,我首先配置了项目的权限文件。以下是必要的权限配置:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
{
  "module": {
    "abilities": [
      {
        "name": "ObjectDetectionAbility",
        "permissions": [
          "ohos.permission.INTERNET",
          "ohos.permission.READ_MEDIA",
          "ohos.permission.WRITE_MEDIA"
        ]
      }
    ]
  }
}

通过这些配置,我的项目能够读取用户的图片文件,并与HarmonyOS的AI服务接口交互。


第三阶段:多目标识别核心功能实现

初始化与销毁检测器

多目标识别服务需要初始化一个检测器实例,同时在不再使用时销毁该实例以释放资源。以下是相关代码:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
import { objectDetection } from '@kit.CoreVisionKit';

let detector: objectDetection.ObjectDetector | undefined = undefined;

async function initializeDetector() {
    detector = await objectDetection.ObjectDetector.create();
    console.info('多目标识别检测器初始化成功');
}

async function destroyDetector() {
    if (detector) {
        await detector.destroy();
        console.info('多目标识别检测器已销毁');
    }
}

加载图片并处理检测

实现多目标识别的核心在于加载图片并调用process方法进行检测:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
async function detectObjects(imageUri: string) {
    if (!detector) {
        console.error('检测器未初始化');
        return;
    }

    const pixelMap = await loadPixelMap(imageUri);
    const request = {
        inputData: { pixelMap },
        scene: visionBase.SceneMode.FOREGROUND,
    };

    const response = await detector.process(request);

    if (response.objects.length === 0) {
        console.info('未检测到任何目标');
    } else {
        response.objects.forEach((object, index) => {
            console.info(`目标 ${index + 1}:类别 - ${object.labels[0]}, 置信度 - ${object.score}`);
        });
    }

    pixelMap.release();
}

辅助方法:加载图片

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
import { fileIo } from '@kit.CoreFileKit';
import { image } from '@kit.ImageKit';

async function loadPixelMap(imageUri: string): Promise<image.PixelMap> {
    try {
        console.info(`加载图片: ${imageUri}`);

        // 打开图片文件
        const fileDescriptor = await fileIo.open(imageUri, fileIo.OpenMode.READ_ONLY);
        const imageSource = image.createImageSource(fileDescriptor.fd);

        // 创建PixelMap对象
        const pixelMap = await imageSource.createPixelMap();

        // 关闭文件资源
        await fileIo.close(fileDescriptor);

        console.info('PixelMap加载成功');
        return pixelMap;
    } catch (error) {
        console.error('加载图片失败:', error);
        throw new Error('加载PixelMap失败');
    }
}

第四阶段:用户界面设计

为了使用户可以方便地选择图片并查看检测结果,我利用ArkUI设计了一个简单的用户界面:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
import { View, Text, Button } from '@ohos.arkui';

export default View.create({
    build() {
        return {
            type: "flex",
            flexDirection: "column",
            children: [
                {
                    type: Text,
                    content: "多目标识别应用",
                    style: { fontSize: "20vp", textAlign: "center", marginTop: "20vp" },
                },
                {
                    type: Button,
                    content: "选择图片",
                    style: { height: "50vp", marginTop: "10vp" },
                    onClick: this.onSelectImage,
                },
                {
                    type: Button,
                    content: "检测目标",
                    style: { height: "50vp", marginTop: "10vp" },
                    onClick: this.onDetectObjects,
                },
            ],
        };
    },

    onSelectImage() {
        this.imageUri = '/data/media/sample_image.jpg';
        console.info('图片已选择:', this.imageUri);
    },

    async onDetectObjects() {
        await detectObjects(this.imageUri);
    },
});

第五阶段:性能优化与功能扩展

性能优化

  1. 分辨率调节:降低图片分辨率以减少处理时间。
  2. 并行处理:利用多线程同时处理多张图片。
  3. 缓存机制:缓存已处理的图片结果,避免重复计算。

功能扩展

  1. 目标类型可视化:在图片上绘制检测到的目标边界框。
  2. 分类统计:统计不同类别目标的数量。
  3. 实时检测:结合相机模块实现实时多目标识别。

最后的感悟

通过此次学习和实践,我不仅掌握了多目标识别API的基本功能,还深刻认识到其广阔的应用场景。在未来的开发中,我计划探索更多创新的实现方式,例如结合语音助手,通过语音控制触发目标识别,或与其他AI能力结合,开发更加智能的解决方案。

如果你也对多目标识别感兴趣,不妨从这些基础功能开始,一步步实现自己的创意!

当然如果你也在这一领域研究,不妨关注我,我们一起进步~!

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
【拥抱鸿蒙】HarmonyOS NEXT实现双路预览并识别文字
> 我们在许多其他平台看到过OCR功能的应用,那么HarmonyOS在这方面的支持如何呢?我们如何能快速使用这一能力呢?使用这一能力需要注意的点有哪些呢?就让我们一起来探究吧~
郑知鱼
2025/06/03
1330
【拥抱鸿蒙】HarmonyOS NEXT实现双路预览并识别文字
【HarmonyOS 5】鸿蒙分布式协同应用开发详解
首先是因为当今社会,围绕电子产品生态,人们迫切希望,周边的电子设备可以协同操作。例如手机,手表,电视机,汽车,甚至是各种家电产品。
GeorgeGcs
2025/06/19
570
【HarmonyOS 5】鸿蒙分布式协同应用开发详解
自学记录鸿蒙 API 13:骨骼点检测应用Core Vision Skeleton Detection
骨骼点检测技术是一项强大的AI能力,能够从图片中识别出人体的关键骨骼点位置,如头部、肩部、手肘等。这些信息在人体姿态分析、动作捕捉、健身指导等场景中有着广泛应用。我决定深入学习HarmonyOS Next最新版本API 13中的Skeleton Detection API,并开发一个简单的骨骼点检测应用。
李游Leo
2024/12/29
1290
自学记录鸿蒙 API 13:骨骼点检测应用Core Vision Skeleton Detection
鸿蒙NEXT上传图片功能PhotoViewPicker核心功能解析
PhotoViewPicker 是鸿蒙系统中用于媒体资源选择的核心组件,通过它可以便捷地实现图片、视频等媒体文件的选择功能。下面从基本用法、参数配置到高级应用进行全面解析:
飞龙AI
2025/06/06
1340
flutter_app_icon_badge 插件鸿蒙适配:实现跨平台应用图标角标管理
作者仓库:https://github.com/badver/flutter_app_icon_badge/
徐建国
2025/06/08
750
flutter_app_icon_badge 插件鸿蒙适配:实现跨平台应用图标角标管理
自学记录鸿蒙API 13:实现智能文本识别Core Vision Text Recognition
在完成语音助手项目后,我想试试其他的AI的API 13,于是我瞄上了——智能文本识别。通过研究HarmonyOS Next最新版本API 13中的Core Vision Text Recognition API,我深刻感受到了鸿蒙生态在计算机视觉领域的强大支持。该API能够快速将图像中的文本内容提取为结构化信息,官方给了足够的支持,也为开发者提供了丰富的应用场景。
李游Leo
2024/12/28
1970
自学记录鸿蒙API 13:实现智能文本识别Core Vision Text Recognition
自学记录鸿蒙API 13:实现人脸比对Core Vision Face Comparator
完成了文本识别和人脸检测的项目后,我发现人脸比对是一个更有趣的一个小技术玩意儿。我决定整一整,也就是对HarmonyOS Next最新版本API 13中的Core Vision Face Comparator API的学习,这项技术能够对人脸进行高精度比对,并给出相似度评分,判断是否为同一人。于是,我决定基于这个API开发一个简单的人脸比对小工具。
李游Leo
2024/12/29
2780
自学记录鸿蒙API 13:实现人脸比对Core Vision Face Comparator
自学记录鸿蒙 API 13:实现人脸检测 Core Vision Face Detector
在完成了文本识别项目后,我决定继续挑战另一个视觉相关领域,于是我瞄上了API 13中的——人脸检测。通过研究HarmonyOS Next最新版本API 13中的Core Vision Face Detector API,我发现这项技术不仅支持人脸检测框的定位,还可以识别关键点(如眼睛、鼻子和嘴角位置)及人脸姿态信息。
李游Leo
2024/12/28
1850
自学记录鸿蒙 API 13:实现人脸检测 Core Vision Face Detector
自学记录HarmonyOS Next Image API 13:图像处理与传输的开发实践
在完成了数字版权管理(DRM)的项目后,我对HarmonyOS Next的API设计和功能深度有了更多的信心。这次,我决定挑战图像处理相关的功能,学习一下Image API和SendableImage API。当然依然是最新的API 13。
李游Leo
2024/12/27
1170
自学记录HarmonyOS Next Image API 13:图像处理与传输的开发实践
HarmonyOS NEXT AI基础视觉服务-文字识别
这是一个基于AI基础视觉服务实现的文字识别案例,通过调用设备相机拍摄照片后识别图片中的文字内容。
用户8181473
2025/03/30
950
纯血鸿蒙APP实战开发——图片选择和下载保存案例
本示例介绍图片相关场景的使用:包含访问手机相册图片、选择预览图片并显示选择的图片到当前页面,下载并保存网络图片到手机相册或到指定用户目录两个场景。
小帅聊鸿蒙
2025/02/06
1970
纯血鸿蒙APP实战开发——图片选择和下载保存案例
鸿蒙原生应用开发【分布式数据对象】
在可信组网环境下,多个相互组网认证的设备将各自创建的对象加入同一个 sessionId,使得加入的多个数据对象之间可以同步数据,也就是说,当某一数据对象属性发生变更时,其他数据对象会检测到这一变更,同时将自身属性更新。此时,该 sessionId 下的所有数据对象属性相同,这样的数据对象称之为分布式数据对象。此外,分布式数据对象可以被动退出 sessionId,当分布式数据对象退出 sessionId 后,该对象将检测不到其他对象的变更。
小帅聊鸿蒙
2024/06/28
1350
鸿蒙原生应用开发【分布式数据对象】
鸿蒙开发之PixelMap介绍与实现图片变换
很多读者一看这个文章标题,可能根本不知道能干嘛,且不感兴趣。所以咱们先说说,今天写的这个技术有没有用。
猫林老师
2024/12/23
2790
鸿蒙开发之PixelMap介绍与实现图片变换
《鸿蒙Next ArkTS:开启人工智能应用开发高效新旅程》
在当今科技飞速发展的时代,人工智能与鸿蒙Next的结合正成为开发者们关注的焦点。利用鸿蒙Next的ArkTS语言开发高效的人工智能驱动的应用程序,为我们带来了前所未有的机遇和创新空间。
程序员阿伟
2025/01/20
1550
自学记录鸿蒙API 13:Calendar Kit日历功能从学习到实践
这次的目标是学习和使用HarmonyOS的Calendar Kit功能,特别是最新的API 13版本。Calendar Kit让我感受到了一种与传统开发完全不同的体验——它提供的不只是简单的日历功能,而是一套集创建、查询、更新、删除等强大能力于一体的日程管理服务。
李游Leo
2024/12/31
2750
自学记录鸿蒙API 13:Calendar Kit日历功能从学习到实践
九宫格自由流转拼图游戏
视频请移步到 B 站观看:https://www.bilibili.com/video/BV1ZrvSeDE8Z/?spm_id_from=333.999.0.0
徐建国
2024/08/06
2470
九宫格自由流转拼图游戏
红外探测及目标识别(二)
红外探测系统具有隐蔽性强、探测距离远以及抗干扰能力强等优点,广泛应用于舰船、航空器等目标的识别与跟踪。红外系统主要包含目标探测以及图像识别两部分:其中目标探测是红外系统的硬件基础;图像识别算法能够实现图像内容的判别和目标定位,是后续跟踪任务的前提,具体如图1所示:
联远智维
2022/07/25
3.2K0
红外探测及目标识别(二)
鸿蒙(HarmonyOS)原生AI能力之文本识别
- TextArea:显示识别后的结果,使用TextArea的原因是它对比Text会多一个滚动效果(防止内容过多显示不全)
猫林老师
2024/12/23
1630
鸿蒙(HarmonyOS)原生AI能力之文本识别
【愚公系列】2023年12月 HarmonyOS教学课程 063-通知
移动应用中的通知是指应用程序发送给用户的一种提示或提醒消息。这些通知可以在用户设备的通知中心或状态栏中显示,以提醒用户有关应用程序的活动、事件或重要信息。
愚公搬代码
2025/06/02
600
【愚公系列】2023年12月 HarmonyOS教学课程 063-通知
猫头虎分享:鸿蒙生态带给开发者的全新机遇!轻松实现按需加载与多端适配,开发效率翻倍
大家好,我是猫头虎。在10月22日晚上的原生鸿蒙之夜发布会上,华为不仅带来了全新的原生鸿蒙鸿蒙系统,还宣布了原生鸿蒙应用市场的焕新升级。这次升级在用户体验和隐私保护上实现了双重创新,尤其在可用性和隐私安全方面取得了显著突破。同时原生鸿蒙应用市场也为开发者提供自动化检测前移、测试、按需加载等服务,帮助开发者更高效地实现应用开发、降低开发成本并精准获取用户反馈,提升应用质量和用户满意度。今天我就从开发者和用户的角度,深入剖析这些变化。 如果你对原生鸿蒙操作系统还不太了解,不妨先看一下对 HarmonyOS NEXT的简单介绍,然后我们再一起看看原生鸿蒙应用市场。
猫头虎
2024/11/06
1560
猫头虎分享:鸿蒙生态带给开发者的全新机遇!轻松实现按需加载与多端适配,开发效率翻倍
推荐阅读
相关推荐
【拥抱鸿蒙】HarmonyOS NEXT实现双路预览并识别文字
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验