ARCore之路-图像识别实例之二

版权声明:David Wang原创ARCore文章,仅供学习研究之用,不得用于任何商业目的,未经授权不得转载! https://blog.csdn.net/yolon3000/article/details/83831652

  上一节我们已经使用ARCore实现了识别图像并实例化3D模型,运行得非常完美,因为我们选择的图像评分为90分,识别速度也非常快,当然,作为示例,我们只在图像数据库(AugmentedImageDatabase)中加了一张图像,并且也没有对多图像跟踪做处理,但我们依然是实现了我们想要的效果。本节我们来做另一个ARCore1.5中刚新加的功能,就是动态添加目标图像数据到图像数据库中。在实际使用中,我们不可能把所有需要识别的图像都预先存储在图像数据库(AugmentedImageDatabase)中,这样是非常不灵活的,在ARCore1.5中就解决了这个问题,可以在运行时动态的添加图像到图像库中,下面我们就来实现他。

一、环境准备

  刚才说了,这是ARCore1.5中新添加的功能,所以我们还需要新下载ARCore1.5.app以及 Unity_ARCore1.5 SDK,并配置好相应环境,并将我们上节中需要的资料准备好,这里可以参考之前的文章,不再赘述。准备好的环境如下图如所示:

DavidWang原创

二、编写代码

  我们直接使用上一节的AppController,稍作修改代码如下:

    public Camera FirstPersonCamera;
    public Texture2D mFox;
    public AugmentedImageDatabase imgBase;
    public GameObject mprefab;
    private bool mIsQuitting = false;
    private const float mModelRotation = 180.0f;
    public GameObject mFitToScanOverlay;
    private Dictionary<int, GameObject> mVisualizers = new Dictionary<int, GameObject>();
    private List<AugmentedImage> mTempAugmentedImages = new List<AugmentedImage>();
    private bool mTracking = false;

    void Start () {
        OnCheckDevice();
        Debug.Log("imgBase Count:"+imgBase.Count);        
       imgBase.AddImage("fox", mFox);
    }
    
    ......

  与上一节代码不同之处在于,我们声明了一个Public AugmentedImageDatabase 及一个 public Texture2D mFox,这一个用来引用我们的图像数据库,第二个是我们想要动态添加到图像数据库中的图像(为了方便理解,这里使用了最简单的引用图像的方式)。然后我们在 Start()方法中将图像动态的添加到了图像数据库中。AppController的相应设置如下图所示:

DavidWang原创

三、注意点

  1、AugmentedImageDatabase
  图像数据库(AugmentedImageDatabase)是存储由Arcore检测和跟踪的图像列表的数据库,图像数据库支持多达1000幅图像但在任何给定时间,只能使用一个图像数据库。
  AddImage方法的原型为AddImage(string name, Texture2D image, float width)

参数 解释
string name 需要添加的图像名称,可随便写。
Texture2D image 需要添加的图像。
float width 需要添加的图像物理宽度(以米为单位),如果宽度不知道,则为0。或者使用默认值,不用处理。
返回值 添加到图像数据库后该图像的索引,如果出现错误,则为-1。

  2、图像格式
  经过测试,ARCore动态添加图像支持的格式非常之少。前面章节中我们提到过,ARCore图像数据库可以支持jpg,png两种图像格式,但动态添加时,很多jpg,png的编码格式都不支持,如ETC_RGB4、Alpha8等等,需要非常仔细的挑选作为目标图像的图像文件,不然很可能出现添加不成功的问题。

  3、ARCore1.5.1
  ARCore1.5.1下载安装后会莫名的停止工作,导致应用非常不稳定,也需要予以关注。

四、识别效果

  识别效果与上节一致。

DavidWang原创

猜你喜欢

转载自blog.csdn.net/yolon3000/article/details/83831652