一丶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. 0011SpringBoot的@EnableWebMvc全面接管SpringMVC的自动配置(源码)

    所谓的@EnableWebMvc全面接管SpringMVC的自动配置,是指@EnableWebMvc注解会使SpringMVC的自动配置失效,原理如下: 1.查看@EnableWebMvc的源码,如下 ...

  2. 一致性Hash算法(转载)

    原文地址http://blog.csdn.net/caigen1988/article/details/7708806   consistent hashing 算法早在 1997 年就在论文 Con ...

  3. python ini文件内容的读取

    (1)新建一个项目,再次新建一个文件 test_cfg.ini (2)再次新建 get_test_cfg.py,用来读取/写入/更改 ini的文件内容 #!/usr/bin/env python # ...

  4. ZrOJ #878. 小K与赞助 (网络流)

    傻逼最大费用流: . 两棵树分别流,最后汇合. CODE #include <bits/stdc++.h> using namespace std; #define pb push_bac ...

  5. 父元素设置固定宽度并设置overflow:scroll,如何让子元素撑开父元素

    <div class="a"> <div class="b"> <div class="c">内容内容, ...

  6. 008_linuxC++之_类的静态变量和静态函数

    (一)看程序 #include <iostream> #include <string.h> #include <unistd.h> using namespace ...

  7. Java+自动扫描文件夹+发送+上传

    1.介绍enctype enctype 属性规定发送到服务器之前应该如何对表单数据进行编码. enctype作用是告知服务器请求正文的MIME类型(请求消息头content-type的作用一样) 1. ...

  8. apt update时出现签名无法验证,公钥失效的解决办法

    错误信息如下 W: GPG error: http://ppa.launchpad.net/ondrej/php/ubuntu xenial InRelease: The following sign ...

  9. 使用Excel拼凑SQL语句

       快速将一列多行数据合并到一个单元格            EXCEL如何快速将一列多行数据合并到一个单元格,并加分隔符?这是批量处理由一线业务员统计的数据时的常用方法,尤其是当一列数据是wher ...

  10. Spring框架IOC解说

    控制反转——Spring通过一种称作控制反转(IoC)的技术促进了松耦合.当应用了IoC,一个对象依赖的其它对象会通过被动的方式传递进来,而不是这个对象自己创建或者查找依赖对象.你可以认为IoC与JN ...