鸿蒙(API 12 Beta6版)图形【识别目标形状】 AR引擎服务
本章节介绍如何对目标物体进行形状识别,可识别的形状包括矩形和圆形。 创建AR会话 创建AR会话并配置为目标形状识别模式。 AREngine_ARSession *arSession = nullptr; // 创建AR会话。 HMS_AREngine_ARSession_Create(nullptr, nullptr, &arSession); AREngine_AR
本章节介绍如何对目标物体进行形状识别,可识别的形状包括矩形和圆形。
创建AR会话
创建AR会话并配置为目标形状识别模式。
AREngine_ARSession *arSession = nullptr;
// 创建AR会话。
HMS_AREngine_ARSession_Create(nullptr, nullptr, &arSession);
AREngine_ARConfig *arConfig = nullptr;
// 创建AR会话配置器。
HMS_AREngine_ARConfig_Create(arSession, &arConfig);
// 设置语义识别模式为目标形状识别。
HMS_AREngine_ARConfig_SetSemanticMode(arSession, arConfig, ARENGINE_SEMANTIC_MODE_TARGET);
// 配置器设置给AR会话。
HMS_AREngine_ARSession_Configure(arSession, arConfig);
创建可跟踪对象列表
创建一个可跟踪对象列表targetList,用于存放AR Engine运行过程中检测到的所有可跟踪对象。
AREngine_ARTrackableList *targetList = nullptr;
HMS_AREngine_ARTrackableList_Create(arSession, &targetList);
获取当前环境中的可跟踪对象
调用[HMS_AREngine_ARSession_GetAllTrackables]函数,检测当前环境中的所有可跟踪对象,并将结果存放在targetList中。
HMS_AREngine_ARSession_GetAllTrackables(arSession, ARENGINE_TRACKABLE_TARGET, targetList);
获取可跟踪对象数量
调用[HMS_AREngine_ARTrackableList_GetSize]函数获取当前可跟踪对象数量,结果存放在targetSize中。
int32_t targetSize = 0;
HMS_AREngine_ARTrackableList_GetSize(arSession, targetList, &targetSize);
当targetSize等于0时,代表当前环境中无可跟踪对象。
当targetSize等于1时,代表当前环境中仅存在1个可跟踪对象。
当targetSize大于1时,代表当前环境中存在多个可跟踪对象。
遍历并识别物体形状
- 当环境中存在一个或多个可跟踪对象时,依次遍历targetList中所有可跟踪对象进行目标形状识别。
for (int i = 0; i < targetSize; ++i) {
// 遍历可跟踪对象,进行形状识别。
}
- 对于第i个对象,创建并获取对象实例。
AREngine_ARTrackable *target = nullptr;
HMS_AREngine_ARTrackableList_AcquireItem(arSession, targetList, i, &target);
- 获取该实例跟踪状态,当且仅当其跟踪状态为ARENGINE_TRACKING_STATE_TRACKING时,才可进行形状识别。
AREngine_ARTrackingState outTrackingState;
HMS_AREngine_ARTrackable_GetTrackingState(arSession, target, &outTrackingState);
if (AREngine_ARTrackingState::ARENGINE_TRACKING_STATE_TRACKING != outTrackingState) {
continue;
}
- 获取该实例目标形状,识别结果存放在label中。
AREngine_ARTargetShapeLabel label = ARENGINE_TARGET_SHAPE_UNKNOWN;
HMS_AREngine_ARTarget_GetShapeType(arSession, reinterpret_cast<AREngine_ARTarget *>(target), &label);
其中,[AREngine_ARTargetShapeLabel]为枚举类型,描述了目标物体形状。
销毁可跟踪对象列表
HMS_AREngine_ARTrackableList_Destroy(targetList);
最后呢
很多开发朋友不知道需要学习那些鸿蒙技术?鸿蒙开发岗位需要掌握那些核心技术点?为此鸿蒙的开发学习必须要系统性的进行。
而网上有关鸿蒙的开发资料非常的少,假如你想学好鸿蒙的应用开发与系统底层开发。你可以参考这份资料,少走很多弯路,节省没必要的麻烦。由两位前阿里高级研发工程师联合打造的《鸿蒙NEXT星河版OpenHarmony开发文档》里面内容包含了(ArkTS、ArkUI开发组件、Stage模型、多端部署、分布式应用开发、音频、视频、WebGL、OpenHarmony多媒体技术、Napi组件、OpenHarmony内核、Harmony南向开发、鸿蒙项目实战等等)鸿蒙(Harmony NEXT)技术知识点
如果你是一名Android、Java、前端等等开发人员,想要转入鸿蒙方向发展。可以直接领取这份资料辅助你的学习。下面是鸿蒙开发的学习路线图。

针对鸿蒙成长路线打造的鸿蒙学习文档。话不多说,我们直接看详细鸿蒙(OpenHarmony )手册(共计1236页)与鸿蒙(OpenHarmony )开发入门视频,帮助大家在技术的道路上更进一步。
- 《鸿蒙 (OpenHarmony)开发学习视频》
- 《鸿蒙生态应用开发V2.0白皮书》
- 《鸿蒙 (OpenHarmony)开发基础到实战手册》
- OpenHarmony北向、南向开发环境搭建
- 《鸿蒙开发基础》
- 《鸿蒙开发进阶》
- 《鸿蒙开发实战》


鸿蒙开发文件前往:gitee.com/li-shizhen-skin/harmony-os/blob/master/README.md自取
总结
鸿蒙—作为国家主力推送的国产操作系统。部分的高校已经取消了安卓课程,从而开设鸿蒙课程;企业纷纷跟进启动了鸿蒙研发。
并且鸿蒙是完全具备无与伦比的机遇和潜力的;预计到年底将有 5,000 款的应用完成原生鸿蒙开发,未来将会支持 50 万款的应用。那么这么多的应用需要开发,也就意味着需要有更多的鸿蒙人才。鸿蒙开发工程师也将会迎来爆发式的增长,学习鸿蒙势在必行! 自↓↓↓拿
更多推荐
所有评论(0)