一丶ARCamera(AR的灵魂)

1.World Center Mode

  • SPECIFIC_TARGET:制定一个物体作为世界中心坐标
  • FIRST_TARGET:摄像机所照射到的第一个需要识别的目标为世界中心坐标
  • CAMERA:摄像机为世界中心的坐标

2.Open Vuforia Engine Configuration

a.Camera Device Mode:

  • MODE_OPTIMIZE_QUALITY:质量优先
  • MODE_OPTIMIZE_SPEED:速度优先
  • MODE_DEFAULT:默认

b.最大识别数量:

  • MaxSimultaneous Tracked Images:最大识别的图片数量
  • MaxSimultaneous Tracked Objects:最大识别的物体数量

c.Camere Direction:

  • CAMERA_DEFAULT:默认摄像机

  • CAMERA_BACK:指定后置摄像头

  • CAMERA_FRONT:指定前置摄像头

    特别注意:电脑端调试时打开的都是前置摄像头

d.Device Type:

  • Handle:手持

  • Difital Eyewear:眼镜

  • Phone+Viewer:用于MR(混合现实)

二丶Default Trackable Event Handler脚本(后续的开发只需要继承ITrackableEventHandler接口即可)

// 找到了需要识别的物体
protected virtual void OnTrackingFound(); // 丢失了需要识别的物体
protected virtual void OnTrackingLost(); // 状态切换
public void OnTrackableStateChanged(
TrackableBehaviour.Status previousStatus,
TrackableBehaviour.Status newStatus)
{
m_PreviousStatus = previousStatus;
m_NewStatus = newStatus; if (newStatus == TrackableBehaviour.Status.DETECTED ||
newStatus == TrackableBehaviour.Status.TRACKED ||
newStatus == TrackableBehaviour.Status.EXTENDED_TRACKED)
{
Debug.Log("Trackable " + mTrackableBehaviour.TrackableName + " found");
OnTrackingFound();
}
else if (previousStatus == TrackableBehaviour.Status.TRACKED &&
newStatus == TrackableBehaviour.Status.NO_POSE)
{
Debug.Log("Trackable " + mTrackableBehaviour.TrackableName + " lost");
OnTrackingLost();
}
else
{
// For combo of previousStatus=UNKNOWN + newStatus=UNKNOWN|NOT_FOUND
// Vuforia is starting, but tracking has not been lost or found yet
// Call OnTrackingLost() to hide the augmentations
OnTrackingLost();
}
}

我们实现功能只需在OnTrackingFound和OnTrackingLost两个函数上实现即可

Turn off Behaviour脚本

链接到设备的摄像头后销毁Mesh Renderer和Mesh Filter组件

三丶功能

  • Image Target:这是最常用、也是最简单的识别对象,即单一静态的平面图像
  • Multi-Targets(立方体识别):多对象识别,可以同时识别多张Image Targets,并且可以把它们和几何立体物体结合起来,比如一个纸盒子,或者任意形状的平面
  • Cylinder Targets(圆柱体识别):是形状类似于圆柱形的图片,可以将这些图片贴到一些圆柱形物体上比如瓶子、杯子等等,进行识别
  • Text Recognization:文字识别,但是很遗憾,不支持中文汉字识别,只支持英文(但同时官方文档给了下面的提示)

而这里使用的是Vuforia8.0.10,所以在这不推荐使用这个功能了

  • Object Recognization:实物识别

    1. Object Sacnner:对象扫描仪,目前只支持一部分的三星和谷歌手机,所以设备有很大的限制,因此我暂时不会使用这个功能
    2. Scan3D:在Google Play下载,可以扫描真实世界的物体
    3. Vuforia Engine数据库最多可以容纳20个对象目标
  • VuMark:这是Vuforia自己研发的一种新型条形码,并且被称为下一代条形码,你能够自己随意设计这种条形码的样式,并且在其中融入相关的数据信息(自由度高);可用于识别零件和设备等

  • Model Target: 模型目标使使用Vuforia Engine构建的应用程序能够根据对象的形状识别和跟踪现实世界中的特定对象

    1.各种各样的物体可以用作 模型目标,从家用电器玩具车辆,到大型工业设备甚至建筑地标

    2.对象必须:

    • 几何刚性(即它不能变形或可延展)。

    • 呈现稳定的表面特征(不支持光亮表面)。

    • 根据其所处的环境进行修复。

  • Virtual Buttons(虚拟按钮):这是唯一一个交互的功能(与现实交互) 虚拟按钮部分要选择特征点比较丰富的部位

    1.接口:VirtualButtonEventHandler和IVirtualButtonEventHandler

    public void OnButtonPressed(VirtualButtonAbstractBehaviour vb)
    public void OnButtonReleased(VirtualButtonAbstractBehaviour vb)

    实现功能时和普通按钮一样,可实现长按短按,双击等操作

  • Cloud Recognition:云识别 (免费1000个标记)

    1.Server Access Keys:用来上传图片和管理图片

    2.Client Access Keys:APP中图片识别服务而搜索数据库

    3.元数据:元数据保存Json文件地址,而数据保存在Json文件中

    4.Book案例(官方定位的最佳体验)

  • Ground Plane Detection:(Smart Terrain的一部分)

    1.检测和跟踪水平表面(地板)

    2.在水平表面上生成3D物体

    3.但暂时也是有一定的设备限制

    Vuforia Fusion Supported Devices

    4.可用于家庭家具购物和应用游戏和设计可视化等

  • User Defined Targets(用户自定义目标):

    1.实现原理:通过两个新的类::ImageTargetBuilder 和 ImageTargetBuilderState 实现创建

2.UserDefinedTargetEventHandler脚本

三个选项:

1.Start scanning automatically:当开始摄像头,自动检测摄像头画面的特征点

2.Stop tracker while scanning:当扫描的时候自动终止跟踪,当停止扫描,跟踪自动开启。

3.Stop scanning after creating a target:当新的target创建之后,自动停止扫描

PS:默认选择第一项,这种方式一直扫描状态,当Target创建之后会被立刻跟踪。因此,模型出现更快。并且选择这种,可以识别多个标志。

四丶图片识别机制

通过检测自然特性点的匹配来完成的,将Target Manager中的Image检测出的特征点保存在数据库中,然后实时检测初真实图像中的特征点与数据库中模板图片的特征点数据进行匹配

1.服务器对上传图片进行灰度处理,图片变为黑白图像

2.提取黑白图形特征点: 图片中尖锐可辩、轮廓分明的地方为特征点

3.将特征点数据打包;

4.程序运行时对比特征点数据包

注意事项

1.最好时无光泽,较硬材质的卡片

2.包含丰富的细节,较高的对比度(颜色相差较大)以及无重复的图像

3.整幅图片的8%宽度为功能排斥缓冲区,不会被识别

4.带有轮廓分明、有棱角的图案

5.图像目标应在漫反射灯光照射的适度明亮的环境中,图片表面应被均匀照射

作者:Ligo丶

出处:https://www.cnblogs.com/Ligo-Z/

本文版权归作者和博客园共有,欢迎转载,但必须给出原文链接,并保留此段声明,否则保留追究法律责任的权利。

Vuforia笔记1(Vuforia8.0.10与Unity2018.3.6f1)的更多相关文章

  1. CentOS7 编译安装 Nodejs (实测 笔记 Centos 7.0 + node 0.10.33)

    环境: 系统硬件:vmware vsphere (CPU:2*4核,内存2G,双网卡) 系统版本:CentOS-7.0-1406-x86_64-DVD.iso 安装步骤: 1.准备 1.1 显示系统版 ...

  2. Time.deltaTime 的平均值在0.1-0.2左右

    Time.deltaTime 平均值在0.1-0.2左右 低的在0.03 高的在0.3

  3. kafka0.9.0及0.10.0配置属性

    问题导读1.borker包含哪些属性?2.Producer包含哪些属性?3.Consumer如何配置?borker(0.9.0及0.10.0)配置Kafka日志本身是由多个日志段组成(log segm ...

  4. pthreads 2.0.10 test

    CentOS 6.3 cd /root mkdir pthreads //get php-5.6 and install zts version wget cn2.php.net/get/php-5. ...

  5. how to build apache log4cxx 0.10 by Visual Studio 201*

    Chapter 1 Official Steps  We are going to follow the steps here, http://logging.apache.org/log4cxx/b ...

  6. Microsoft.Bcl.Build 1.0.10 稳定版发布

    Microsoft.Bcl.Build 1.0.10 稳定版发布 解决了之前 1.0.8 在未下载相应的Nuget Package 的情况下项目无法加载的情况 但由于 Microsoft.Net.Ht ...

  7. 小红伞和virtualbox5.0.10冲突

    win7 sp1 64bit 旗舰版:virtual box 5.0.10 提示 error in supr3hardNtChildWaitFor……Timed out after 60001 ms ...

  8. Kafka 0.10.0

    2.1 Producer API We encourage all new development to use the new Java producer. This client is produ ...

  9. DotNetBar v12.7.0.10 Fully Cracked

    更新信息: http://www.devcomponents.com/customeronly/releasenotes.asp?p=dnbwf&v=12.7.0.10 如果遇到破解问题可以与 ...

随机推荐

  1. 谷歌网页性能分析工具 Lighthouse 的安装及使用

    github地址:https://github.com/GoogleChrome/lighthouse 一.如果可以翻墙的话可以从 chrome 扩展插件里直接安装. 二.下面是另一种使用方法:基于 ...

  2. php文件更新后不生效?亲测有效!

    1,问题描述 一台windows Server2008 服务器上运行了iis7,其中存在php5.3和php5.5引擎的网页服务. 但实际使用中发现,修改php文件后,访问该文件的结果经常不能实时刷新 ...

  3. 2019HDU多校Path——最短路最小割

    题目 给出一个 $n$ 个顶点 $m$ 条边的图,要求阻塞一些边,使得从 $1$ 到 $n$ 的最短路变长,求阻塞的边长度和的最小值,不必保证阻塞后可达. 分析 很显然,要阻塞的边肯定在最短路图上,先 ...

  4. BZOJ 4008 亚瑟王(概率DP 奥妙重重)

    题意 中文题面,就不解释了 分析 显然这道题直接求期望太麻烦,想想转化问题(这转化太神了). 定义f(i,j)f(i,j)f(i,j)表示第iii张卡总共被经过jjj次的概率,有转移方程式 f(i,j ...

  5. ELK---- kibana 安装 学习

    我已经安装了java环境,和elasticsearch.这只有存储,那么管理界面工具什么的,目前还没有,我就是用kibana进行安装. Kibana是一个开源的分析和可视化平台,设计用于和Elasti ...

  6. 004_FreeRTOS创建与删除任务

    (一)创建与删除任务函数 (二)上面的四个函数目前只用动态创建任务和删除任务 (三)动态创建任务 函数 xTaxkCreate() 1. 宏 configSUPPORT_DYNAMIC_ALLOCAT ...

  7. 显示浏览访客的IP

    jQuery(function($){    var url = 'http://chaxun.1616.net/s.php?type=ip&output=json&callback= ...

  8. jenkins 邮件发送错误

    jenkins 在创建新的 Build 的时候希望邮件进行通知. 但是邮件通知的时候出现错误: Unable to Send Mail - javax.net.ssl.SSLException: Un ...

  9. 敌兵布阵(HDU 1166)

    Problem Description C国的死对头A国这段时间正在进行军事演习,所以C国间谍头子Derek和他手下Tidy又开始忙乎了.A国在海岸线沿直线布置了N个工兵营地,Derek和Tidy的任 ...

  10. Java安全(加密、摘要、签名、证书、SSL、HTTPS)

    对于一般的开发人员来说,很少需要对安全领域内的基础技术进行深入的研究,但是鉴于日常系统开发中遇到的各种安全相关的问题,熟悉和了解这些安全技术的基本原理和使用场景还是非常必要的.本文将对非对称加密.数字 ...