我们如何通过增强现实方式实时实现对象识别?

时间:2015-04-24 09:54:01

标签: augmented-reality object-recognition

我需要实时实现图像识别。所以我尝试了增强现实的metaio SDK。在Metaio SDK中,我使用了扩展图像跟踪。但通过这种方式,只能在静态中添加一个图像和文本到该图像。因此,如果我扫描该图像,我可以得到文本。我们如何通过增强现实方式动态实现对象识别。是否有其他支持对象识别和3D跟踪的SDK(试用版)。

帮助非常明显。

提前致谢, 拉克西米。

2 个答案:

答案 0 :(得分:0)

好吧,我不知道Metaio,但Vuforia有你想要的这个功能。

Vuforia有这个用户定义目标的概念。您可以下载Vuforia SDK或Vuforia的Unity扩展程序。

我个人使用Vuforia Unity,只需要更改ARCamera,以便它符合用户定义的设置。

之后,您只需添加此脚本即可访问相机图像,如下所示:

using UnityEngine;
using System.Collections;
public class CameraImageAccess : MonoBehaviour 
{
    private Image.PIXEL_FORMAT m_PixelFormat = Image.PIXEL_FORMAT.RGB888;
    private bool m_RegisteredFormat = false;
    private bool m_LogInfo = true;
    void Start()
    {
        QCARBehaviour qcarBehaviour = (QCARBehaviour) FindObjectOfType(typeof(QCARBehaviour));
        if (qcarBehaviour)
        {
            qcarBehaviour.RegisterTrackablesUpdatedCallback(OnTrackablesUpdated);
        }
    }
    public void OnTrackablesUpdated()
    {
        if (!m_RegisteredFormat)
        {
            CameraDevice.Instance.SetFrameFormat(m_PixelFormat, true);
            m_RegisteredFormat = true;
        }
        if (m_LogInfo)
        {
            CameraDevice cam = CameraDevice.Instance;
            Image image = cam.GetCameraImage(m_PixelFormat);
            if (image == null)
            {
                Debug.Log(m_PixelFormat + " image is not available yet");
            }
            else
            {
                string s = m_PixelFormat + " image: \n";
                s += "  size: " + image.Width + "x" + image.Height + "\n";
                s += "  bufferSize: " + image.BufferWidth + "x" + image.BufferHeight + "\n";
                s += "  stride: " + image.Stride;
                Debug.Log(s);
                m_LogInfo = false;
            }
        }
    }

如果您计划使用Vuforia SDK,那么您应该使用图像类,这样就像原生版本一样。

  • 使用CameraDevice.SetFrameFormat方法注册所需的图片格式:CameraDevice.Instance.SetFrameFormat(Image.PIXEL_FORMAT.RGB888, true);

  • QCARBehaviour有机会运行其Start方法后调用此方法。

  • 使用Unity脚本排序功能,或在Update回调中执行此操作。
  • 使用CameraDevice.GetCameraImage方法检索图像。
  • ITrackerEventHandler.OnTrackablesUpdated回调中执行此操作。这样,您可以确保检索与当前帧匹配的最新摄像机图像。
  • 始终确保相机图像不为空,因为注册图像格式后图像可能需要几帧才能使用。
  

竖起大拇指,如果这有用的话。

答案 1 :(得分:0)

查看ARtoolkit(开源),它可以使用Natural Feature Tracking.识别和跟踪您自己的图像(因此只有2d曲面,而不是3d对象)

另一种选择是OpenCV,这是一个巨大的开源计算机视觉库。

相关问题