【问题标题】:How we can implement object recognition in real time through Augmented Reality way?我们如何通过增强现实的方式实时实现物体识别?
【发布时间】:2015-07-02 20:57:39
【问题描述】:

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

帮助非常明显。

提前致谢, 拉克斯米。

【问题讨论】:

    标签: augmented-reality object-recognition


    【解决方案1】:

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

    另一个替代方案是OpenCV,它是一个巨大的开源计算机视觉库。

    【讨论】:

      【解决方案2】:

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

      Vuforia 具有用户定义目标的概念。您可以下载 Vuforia SDK 或 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 回调中执行此操作。这样,您可以确保检索到与当前帧匹配的最新相机图像。
      • 始终确保相机图像不为空,因为在注册图像格式后,图像可能需要几帧才能变为可用。

      如果有帮助,请点赞。

      【讨论】:

      • 您好,非常感谢您的信息。假设如果我们扫描任何对象,我们可以通过 vuforia 增强现实获取对象的名称和其他详细信息,并且可以加载动态模型吗?请向我推荐任何教程。
      • Vuforia 有一个名为 Vuforia Object Scanner 的应用程序,可让您扫描任何对象 360 并在应用程序中使用它。但这不能动态完成。应在应用程序开发期间对其进行扫描。没有教程,但您可以继续查看 Vuforia 网站以获取任何信息,尽管它可能很糟糕。任何问题都可以作为一个单独的问题在 SO 上提出。 :) 祝你好运!
      猜你喜欢
      • 1970-01-01
      • 2022-01-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多