ImageTarget

前言

ImageTarget 顾名思义,就是图像识别,本文记录下作者最近学习vuforia中的imageTarget笔记与心得。

vuforia guide:https://library.vuforia.com/articles/Training/Image-Target-Guide

vuforia sample  - 选择 Core Features下载,导入ImageTarget.unitypackagehttps://developer.vuforia.com/downloads/samples

vuforia 基础知识:高通Vuforia Getting Started

开发环境

Vuforia 6.0.112

Unity 5.3.6f1 x64  (Android平台)

Windows 7 x64

名词说明

下面列举下本文中所列出的几个名词,可能每个人对这些英文的理解不一样,这些解释仅仅代表个人观点。

Database(数据集、图集):大体都是指多张图片组合在一起的那个东西

ImageTarget(识别图):具体的某张识别图像

自带Demo简单分析

1、从Demo中可以看出,当有多个ImageTarget时,每个ImageTarget之间是有间距的,可以简单理解为每个ImageTarget的坐标值不一样【(x,z)平面】,如下所示:

2、Demo中把需要识别的图,全部以ImageTarget的形式,放置在场景中

3、Word Center Mode默认的模式选择的是 FirstTarget

4、如果需要同时识别多个ImageTarget,需要设置最大识别数量

World Center Mode

FirstTarget

相机在运动,第一个Found的ImageTarget坐标不动,其它ImageTarget会轻微地运动

Camera

ImageTarget在运动,相机不动

自己搭建的简单步骤

1、上传识别图到管理后台(单张图像不超过2mb大小,如果是灰度图,建议使用jpg格式),管理后台会智能地标注出图像的识别点(如何让图像更具可识别性?有针对图像的设计指南)

2、下载识别图package,导入到Unity中,package中包括数据集(xxx.data),xml(xxx.xml),识别图(xxx_scale.jpg,xxx_scale.png)

3、根据Demo的示例创建一个新场景,里面有ARCamera,ImageTarget,在ImageTarget的属性面板选择database识别图(ImageTarget)

4、运行程序,当摄像头识别到步骤3的选定的识别图之后,就会触发OnFound事件,而当识别图移开或者被遮挡,会触发OnLost事件

具体的业务逻辑,在OnFound和OnLost中进行处理

void OnFound(string trackableName){
//TODO 识别成功的逻辑处理,参数trackableName就是xml中的name
} void OnLost(string trackableName){
//TODO 丢失的逻辑处理,参数trackableName就是xml中的name
}

xml 分析

下载的package中的xml内容如下

<?xml version="1.0" encoding="UTF-8"?>
<QCARConfig xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="qcar_config.xsd">
<Tracking>
<ImageTarget name="798_01" size="1.000000 1.434034" />
<ImageTarget name="799_01" size="1.000000 1.434034" />
</Tracking>
</QCARConfig>

分析:这里面的内容就是我们上传的识别图的图片名,长宽的比例。

默认这份xml是放在 StreamAssets\database\database.xml,当然如果不需要那么多的识别图,而又不想在管理中删除多余的识别图,那么有个简单的方法,删除xml中的几行数据,就会删除相应的识别图了。

查看图像识别点

登录vuforia的管理后台 https://developer.vuforia.com/targetmanager/singleDeviceTarget/deviceSingleImageTargetDetails

选择TargetManager - 选择具体的 Database - 具体的 Image  - Show Feature 可以看到识别图的识图点

Tips

同一张识别图,彩图和灰白图的识别点是一样的,如下所示我上传的是张彩色的图,但Show Features显示的是张灰白图。

识别任意张图代码实现

需求说明

假设共有20张图像,当用户扫描其中任意一张图,都可以成功被识别,再比如图集中有500张图像,当扫描任意张图像时都可以被成功识别

思路分析

通过上面的操作步骤,我们知道只有在场景中存在的ImageTarget,在摄像头扫描到时,才可以触发识别成功事件

那么我们需要做的就是:把database中的识别图全部实例成ImageTarget,可能你会想,那就把ImageTarget的prefab实例化20或500个,每个实例的ImageTarget不同呗。

思想是这样的,但还有更简捷的方法。

Load Database

在ARCamera的Database Load Behaviour中勾选了需要的 database之后,运行就会把database中所有的imagetarget都生成出来,并自动已选择好了不同的ImageTarget

测试代码

通过上面的实践,我们知道既然Vuforia会自动把所有的ImageTarget都生成出来,那么我们就可以更加方便了

下面这段代码可以获取所有的识别对象

IEnumerable<TrackableBehaviour> trackableBehaviours = TrackerManager.Instance.GetStateManager().GetTrackableBehaviours();

Tips

1、经测试多图识别中,在丢失之后最好重设下ImageTarget的位置到初始值,否则可能出现奇怪现象。

2、可以获取ImagetTargetBehaviour的Size,设置每个ImageTarget的位置

测试代码:https://github.com/zhaoqingqing/blog_samplecode/tree/master/ar-vr-mr/vuforia/imagetarget

[AR]ImageTarget(图像识别)的更多相关文章

  1. 中国VR公司的详尽名单

    中国VR公司的详尽名单   <VR圈深度投资报告一:2014年以来所有VR/AR融资事件> 特征一.投资机构观望居多 尽管VR在媒体和二级市场炒得很热,但大多风险投资机构却慎于出手,以观望 ...

  2. 再谈AR中的图像识别算法

    之前在<浅谈移动平台创新玩法>简单的猜测了easyar中使用的图像识别算法,基于图片指纹的哈希算法的图片检索 .后再阿里引商大神的指点下,意识到图片检测只适用于静态图片的识别,只能做AR脱 ...

  3. 长年承接AR图像识别项目,关于高速UnityARCam多图问题技术整理

    //关于高通ARCameraQCARBehaviour script下 Max Simultneous Image QCARBehaviour script下 Max Simultneous Imag ...

  4. 承接AR摄像头识别外包 AR图像识别 AR识别图像 AR识别应用外包

    增强现实简称AR,是一种实时计算摄影机影像的位置及角度并加上相应图像的技术,这种技术的目标是在屏幕上把虚拟世界套在现实世界并实现互动. 这里千万别和VR虚拟现实混了.简单说就是VR看到的场景都是假的, ...

  5. AR图像识别 AR识别图像 AR摄像头识别 外包开发 AR识别应用开发就找北京动点软件

    当绝大多数手机厂商还在追求后置双摄拍照的时候,已经有人开始潜心研究AR手机了.刚刚结束的美国消费电子展上,华硕发布了全新的ZenFone AR手机,配备5.7英寸2K屏.骁龙821处理器.8GB内存, ...

  6. Vuforia开发完全指南---不懂编程也能做AR程序

    不懂编程也能做AR程序 可能一听到要做AR程序,很多人都会想到这是程序员的事.如果不懂编程,不会写代码,是做不了AR程序的.其实,Vuforia的Unity SDK非常人性化,即使你不会编程,也能做出 ...

  7. VR/AR 非技术总结

    VR/AR 非技术总结 **欢迎转载~转载请注明Erma的博客 http://www.cnblogs.com/Erma-king/** 都说2016是VR/AR的元年,上半年我随着新技术的潮流进入了V ...

  8. GJM : Unity3D 高通Vuforia SDK AR 开发

    一.AR概念: 增强现实(Augmented Reality,简称AR),是在虚拟现实的基础上发展起来的新技术,也被称之为混合现实.是通过计算机系统提供的信息增加用户对现实世界感知的技术,将虚拟的信息 ...

  9. 支付宝推AR实景红包,抢红包得拼脑力和体力

    近年春节,各大互联网平台都会借机掀起"红包大战",其中支付宝和微信的红包玩法备受用户关注.今年,微信尚未公布春节红包相关的方案信息,不过,今天支付宝率先推出"AR实景红包 ...

随机推荐

  1. Android自定义View之圆环交替 等待效果

    学习了前面两篇的知识,对于本篇实现的效果,相信大家都不会感觉太困难,我要实现的效果是什么样呢?下面请先看效果图: 看上去是不很炫的样子,它的实现上也不是很复杂,重点在与onDraw()方法的绘制. 首 ...

  2. mssql 字增自段怎样重置(重新自增)|清空表已有数据

    方法1 -- 清空已有数据,并且将自增自段恢复从1开始计数 truncate table 表名 方法2 -- 不清空已有数据,但将自增自段恢复从1开始计数 dbcc checkident(表名,RES ...

  3. ASP.Net中实现上传过程中将文本文件转换成PDF的方法

    iTextSharp是一个常用的PDF库,我们可以使用它来创建.修改PDF文件或对PDF文件进行一些其他额外的操作.本文讲述了如何在上传过程中将文本文件转换成PDF的方法. 基本工作 在开始之前,我们 ...

  4. Vertica环境安装R-Lang包提示缺少libgfortran.so.1

    环境:RHEL 6.4 + Vertica 7.0.0-11.最终确认安装compat-libgfortran-41-4.1.2-39.el6.x86_64.rpm即可解决. # rpm -ivh v ...

  5. 你真的会玩SQL吗?让人晕头转向的三值逻辑

    你真的会玩SQL吗?系列目录 你真的会玩SQL吗?之逻辑查询处理阶段 你真的会玩SQL吗?和平大使 内连接.外连接 你真的会玩SQL吗?三范式.数据完整性 你真的会玩SQL吗?查询指定节点及其所有父节 ...

  6. 没有神话,聊聊decimal的“障眼法”

    0x00 前言 在上一篇文章<妥协与取舍,解构C#中的小数运算>的留言区域有很多朋友都不约而同的说道了C#中的decimal类型.事实上之前的那篇文章的立意主要在于聊聊使用二进制的计算机是 ...

  7. Dozer扫盲级教程

    前言 这篇文章是本人在阅读Dozer官方文档(5.5.1版本,官网已经一年多没更新了)的过程中,整理下来我认为比较基础的应用场景. 本文中提到的例子应该能覆盖JavaBean映射的大部分场景,希望对你 ...

  8. 我的EF功能

    由来 话说这个功能想法由来与java的Hibernate功能,我需要一个类和数据库映射,很简单的写一个实体类简单配置一下就ok了, 很是方便, package com.game.po.log; imp ...

  9. ChatSecure

    ChatSecure是一个免费和开源消息传递应用程序的特性 OTR加密在 XMPP. 你可以连接到现有的谷歌帐户或创建新帐户 公共XMPP服务器(包括通过 Tor),甚至 连接到您自己的服务器额外的安 ...

  10. [.NET Core].NET Core R2安装教程及Hello示例

    前言 前几天.NET Core发布了.NET Core 1.0.1 R2 预览版,之前想着有时间尝试下.NET Core.由于各种原因,就没有初试.刚好,前几天看到.NET Core发布新版本了,决定 ...