Heim >Datenbank >MySQL-Tutorial >Vuforia Unity Camera Image Access

Vuforia Unity Camera Image Access

WBOY
WBOYOriginal
2016-06-07 15:43:162013Durchsuche

本文描述了两种方法获取QCAR相机在unity的图像。 The Image class 有两个选项获取摄像机图像从unity(没有增加)。一个是使用 Image 的类。这就像本地的版本。首先,使用 CameraDevice 注册所需的图像式。SetFrameFormat方法: CameraDevice.Instance.SetFrameFo

本文描述了两种方法获取QCAR相机在unity的图像。

The Image class

有两个选项获取摄像机图像从unity(没有增加)。一个是使用Image的类。这就像本地的版本。首先,使用CameraDevice注册所需的图像格式。SetFrameFormat方法:

CameraDevice.Instance.SetFrameFormat(Image.PIXEL_FORMAT.RGB888, true);

QCARBehaviour运行Start方法调用此方法使用Unity脚本排序特征在一次更新回调

然后,您可以使用CameraDevice.GetCameraImage方法检索图像。您可以从ITrackerEventHandler.OnTrackablesUpdated回调来确保你获取最新的相机的图像匹配当前帧。经常检查以确保相机的图像是无效的,因为它可以登记注册后的图像变得可用图像格式需要几帧。

这是完整的脚本

using UnityEngine;
using System.Collections;
public class CameraImageAccess : MonoBehaviour, ITrackerEventHandler
{
    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.RegisterTrackerEventHandler(this);
        }
    }
    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;
            }
        }
    }
}

Background Texture Access

Image类提供了相机的像素作为一个字节数组。这对一些图像处理任务是有用的,但有时最好获得作为一个OpenGL纹理图像。您可以使用BackgroundTextureAccess示例演示的方法。在这里,而不是让Vuforia渲染摄像机图像每一帧,你注册一个Texture2D对象充满相机像素每一帧。见Readme。txt附带的示例(在资产文件夹)两种方式渲染相机图像使用这种方法。


参考资料

https://developer.vuforia.com/resources/dev-guide/unity-camera-image-access

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn