使用云数据库检测和跟踪数百万云图像目标。本文介绍了在本机中实现Cloud reco的一般步骤。
云图像目标是存储在Vuforia服务器中的图像目标。这允许您从单个云数据库中存储、检测和跟踪数百万个图像目标。使用上载云图像目标目标经理。另请参阅云目标Web API.
创建云图像目标观测器
云识别由引擎通过云图像目标观测器处理。使用配置云识别VuCloudImageTargetConfig
并使用检测识别事件VuCloudImageTargetObservation目标信息
.
与SDK中的其他跟踪API不同,在SDK中,您可以通过国家的拉取机制获得持续的跟踪更新,云识别不一定会获得持续的信息;您需要注册一个处理程序来获取更新。使用vuCloudImageTargetObserverRegisterHandlers
。创建并激活观察者后,将通过注册的回调函数报告搜索结果VuCloudImageTargetObservationsHandler
.
从VuCloudImageTargetConfig创建观察员
要使用云识别,首先需要初始化系统并设置云数据库的凭据。创建过程需要活动的网络连接并异步运行。
下面创建云图像目标观测器。默认情况下,它处于激活状态。
VuObserver*observer=nullptr;VuCloudImageTargetConfig云映像目标配置=vuCloudImageTargetConfigDefault();cloudImageTargetConfig.userAuth=“<您的凭据>”;cloudImageTargetConfig.secretAuth=“<您的凭据>”;VuCloudImageTargetCreateError创建错误;if(vuEngineCreateCloudImageTargetObserver(引擎、观察者、云图像目标配置和创建错误)!=VU_SUCCESS){//处理观察者创建错误开关(creationError){案例VU_CLOUD_IMAGE_TARGET_CREATION_ERROR_NO_NETWORK_CONNECTION://处理“NO NETWORK”错误断裂;//处理其他VU_CLOUD_IMAGE_TARGET_CREATION_ERROR。。。错误}回报;}
注:在目标管理器的云数据库详细信息中查找您的身份验证密钥。
启动和停止云识别搜索
使用注册云图像目标的处理程序VuCloudImageTargetObservationsHandler
。只要检测到新的云图像目标,就会触发此观察处理程序。然后,您可以选择使用创建图像目标观测器vuEngineCreateImageTargetObserverFromCloudObservation()
开始跟踪图像。
MyClientData客户端数据;/*应用程序特定数据结构的占位符*/vuCloudImageTargetObserverRegisterHandlers(观察者、&recoEventHandler、&queryErrorHandler和&clientData);
处理搜索结果
在运行时,您需要处理新的云识别搜索结果,如果需要,还需要创建图像目标观测器进行跟踪。
下面是一个示例代码片段,通过vuCloudImageTargetObservationGetTargetInfo(vuCloudImageTargetObservationGetTargetInfo)
。目标信息包括名称、唯一id、元数据和跟踪评级。
根据观察结果,样本创建一个图像目标观测器vuEngineCreateImageTargetObserverFromCloudObservation
.
无效VU_API_CALLrecoEventHandler(const VuObservationList*观察值,void*客户端数据){MyClientData*MyClientData=static_cast<MyClientData**(客户端数据);int32_t numObservations=0;vuObservationListGetSize(观测值,&numObservisions);//迭代通过reco事件接收的所有云图像目标观测值for(int i=0;i<num观测值;i++){VuObservation*观测=nullptr;vuObservationListGetElement(观察值、i和观察值);//读取云图像目标信息VuCloudImageTargetObservationTargetInfo云图像目标信息;vuCloudImageTargetObservationGetTargetInfo(观测,&cloudImageTargetInfo);//print(“已识别云图像目标'%s'”,cloudImageTargetInfo.name);//使用云图像目标观测创建图像目标观测器VuImageTargetCloudObservationConfig cloudObservationConfig=vuImageTargetCloudObservationConfigDefault();cloudObservationConfig.observation=观测;cloudObservationConfig.activate=VU_TRUE;//如果发动机正在运行,则自动激活VuObserver*targetObserver=nullptr;VuImageTargetCloudObservation创建错误创建错误;if(vuEngineCreateImageTargetObserverFromCloudObservation(引擎,&targetObserve,&cloudObserverConfig,&创建错误)!=VU_SUCCESS){//错误处理继续;}}}
有关计算和处理云识别搜索结果的更多信息,请参阅计算云识别事件.
错误消息
创建Observer后异步检测到的错误将通过错误处理程序回调进行报告。下面是如何编写这样一个处理程序的示例:
无效VU_API_CALLqueryErrorHandler(VuCloudImageTargetQueryError查询错误,void*客户端数据){MyClientData*MyClientData=static_cast<MyClientData**(客户端数据);//处理与查询相关的错误开关(queryError){案例VU_CLOUD_IMAGE_TARGET_QUERY_ERROR_AUTHORIZATION_FAILED://处理“授权失败”错误断裂;//处理其他VU_CLOUD_IMAGE_TARGET_QUERY_ERROR_。。。错误}}
以下错误代码可能由VuCloudImageTargetQuery错误
。此表列出了代码及其含义。
代码
|
含义
|
VU_云_IMAGE_目标_QUERY_ERROR
_无网络连接
|
无网络连接
|
VU_云_IMAGE_目标_QUERY_ERROR
_服务不可用
|
服务器未找到、关闭或过载
|
VU_CLOUD_IMAGE_TARGET_QUERY_ERROR(音量图像目标查询错误)
_授权失败
|
凭据错误或过期
|
VU_云_IMAGE_目标_QUERY_ERROR
_项目_取消
|
指定的项目已暂停
|
VU_云_IMAGE_目标_QUERY_ERROR
_坏帧质量
|
持续观察到低帧质量
|
VU_云_IMAGE_目标_QUERY_ERROR
_更新_SDK
|
SDK版本已过时
|
VU_云_IMAGE_目标_QUERY_ERROR
_时间戳_输出_范围
|
客户端/服务器时钟间隔太远
|
VU_云_IMAGE_目标_QUERY_ERROR
_请求_超时
|
超时后无网络请求响应
|