本文介绍了两种在Unity中获得相机图像的方法:
1.使用image 类
2.使用图像作为OpenGL的纹理
使用image类
使用image类更像是原生版本。
1.注册所需的图像格式使用CameraDevice.SetframeFormat 方法:
CameraDevice.Instance.SetframeFormat(Image.PIXEL_FORMAT.RGB888, true);
2.在QCARBehaviour运行之后调用此方法
使用Unity的脚本排序功能,或在一个更新的回调中做一次。
3.使用CameraDevice.GetCameraImage方法检索图像。
在 ITrackerEventHandler.OnTrackablesUpdated 的回调中执行这样的行为。这样您就可以确保您检索当前帧的最新的摄像机图像。
一定要确保相机的图像不是空的,因为在注册了图像格式之后,图像会在几帧之后才可用。
这里是完整的脚本:
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.Regi