[探讨] Android CloudReco 云识别

huang0316 2013-12-26 04:31:28
加精
Client与高通云端间的传输协议为HTTPS
以下是官网对与云端交互的API介绍,以往云端添加一张图片为例
协议字段介绍:

*NOTE: The Target POST body can contain either the image_url or the image – but not both.
** NOTE:The Target POST body can contain either the application_metadata_url or application_metadata – but not both.
Authorization与key有关,构成:"Authorization", "VWS " + accessKey + ":" + sb.tmsSignature(request, secretKey);
application_metadata即通过高通网站上传图片时同时上传的TXT文件的内容。
VWS 是Vuforia Web Services 缩写

Client发送请求
POST /targets HTTP/1.1
Host: vws.vuforia.com
Date: Mon, 23 Apr 2012 12:45:19 GMT
Authorization: VWS df8d23140eb443505c0661c5b58294ef472baf64:jHX6oLeqTXpynyqcvVC2MSHarhU
Content-Type: application/json
{
“name”:”tarmac”,
“width:32.0,
“image”:”0912ba39x….”,
“application_metadata”:“496fbb6532b3863460a984de1d980bed5ebcd507”
}

云端回答的报文

Example:
HTTP/1.1 201 Created
Content-Type: application/json
{
“result_code”:”Success”,
“transaction_id”:”550e8400e29b41d4a716446655440452”,
“target_id”: ”550e8400e29b41d41626446655440000”
}

Target_id 是对一个Target即图片的唯一ID
transaction_id是传输报文的ID;


Client识别图片大概流程
1、初始化targetfinder
在CloudReco.cpp 172行(targetFinder->startInit(kAccessKey, kSecretKey)) 利用key初始化和云端的连接

2 、Scanning mode 与. content mode
当应用程序是在扫描模式时,此时Client在获取当前扫描到的图片并与云端匹配;这状态是在Client端有动态扫描。  当应用程序在内容模式下,Client不再与云端匹配扫描到的图片,Client不显示动态的扫描,而在界面上显示增强信息。这两种模式是相互排斥的。  

具体实现接口
在CloudReco.java启动 Scanning mode
private void enterScanningMode()
{
// Hides the 2D Overlay
hide2DOverlay();
// Enables CloudReco Scanning Mode in Native code
enterScanningModeNative();
}
调用了CloudReco.cpp中670行 的enterScanningModeNative();其中targetFinder->startRecognition()为开始扫描识别。
在CloudReco.cpp中19行CloudReco_UpdateCallback 中updateSearchResults
QCAR::TargetFinder* finder = imageTracker->getTargetFinder();
// Check if there are new results available:
const int statusCode = finder->updateSearchResults();
// Show a message if we encountered an error:
if (statusCode == QCAR::TargetFinder::UPDATE_RESULTS_AVAILABLE)
{
// Process new search results
if (finder->getResultCount() > 0)
{
const QCAR::TargetSearchResult* result = finder->getResult(0);
updateSearchResults()向云端发送扫描到的结果;getResult(0);获取向云端发送扫描到结果后云端返回的信息。
(官网对这个API介绍很少,这是猜测的功能。官网介绍见https://developer.vuforia.com/resources/api/class_q_c_a_r_1_1_target_finder


在上面代码中,调用了CloudReco.cpp中的 enterContentMode() (官网这样介绍的,具体不知道是哪个语句调用的),CloudReco.cpp中的 enterContentMode() 实际就是调用java中的 enterContentMode() 方法,并对界面操作,然后调用enterContentModeNative();
enterContentModeNative()完成的操作有1Retrieving the QCAR::TargetFinder 2Stopping the CloudReco service (targetFinder->stop()); 3Setting the scanningMode to false,进入content mode

CloudReco.java中的startWebView中获取json信息并显示
更多介绍 https://developer.vuforia.com/resources/dev-guide/getting-started
...全文
1472 16 打赏 收藏 转发到动态 举报
写回复
用AI写文章
16 条回复
切换为时间正序
请发表友善的回复…
发表回复
zhkx123 2014-02-25
  • 打赏
  • 举报
回复
这个什么图片都能识别吗? 识别图片的什么内容? 文字?
beyondcj 2014-02-22
  • 打赏
  • 举报
回复
这个非常不错值得好好学习!
yubinbin19881234 2014-02-22
  • 打赏
  • 举报
回复
这个非常不错值得好好学习!
konghw1121 2014-02-21
  • 打赏
  • 举报
回复
这个非常不错值得好好学习!
戴状 2014-02-19
  • 打赏
  • 举报
回复
···还行 把 我只是来换积分····
龙大少 2014-02-18
  • 打赏
  • 举报
回复
这个不错,值得学习
网虫1912 2014-02-18
  • 打赏
  • 举报
回复
这个不错,值得学习
dffdfsd 2014-02-18
  • 打赏
  • 举报
回复
确实不错的东西!
dreamflymzll 2014-02-18
  • 打赏
  • 举报
回复
确实不错的东西!
q1064878520 2014-02-18
  • 打赏
  • 举报
回复
这个非常不错值得好好学习!
秋天秋天的雨 2014-02-18
  • 打赏
  • 举报
回复
这个非常不错值得好好学习!
teemai 2013-12-28
  • 打赏
  • 举报
回复
这个不错!!

953

社区成员

发帖
与我相关
我的任务
社区描述
为开发者提供高通丰富的解决方案及全面技术下载内容。本版以AI人工智能、WoS移动笔记本、XR、IoT 物联网、Auto 汽车、生成式AI等核心板块组成,为开发者提供一个便捷及高效的学习交流平台。
人工智能物联网机器学习 企业社区 北京·东城区
社区管理员
  • Qualcomm开发
  • csdnsqst0050
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧