Vuforia Unity Camera Image Access
2015-10-14 10:45
399 查看
本文描述了两种方法获取QCAR相机在unity的图像。
有两个选项获取摄像机图像从unity(没有增加)。一个是使用Image的类。这就像本地的版本。首先,使用CameraDevice注册所需的图像格式。SetFrameFormat方法:
在QCARBehaviour运行Start方法调用此方法(使用Unity脚本排序特征,或在一次更新回调)。
然后,您可以使用CameraDevice.GetCameraImage方法检索图像。您可以从ITrackerEventHandler.OnTrackablesUpdated回调来确保你获取最新的相机的图像匹配当前帧。经常检查以确保相机的图像是无效的,因为它可以登记注册后的图像变得可用图像格式需要几帧。
这是完整的脚本:
Image类提供了相机的像素作为一个字节数组。这对一些图像处理任务是有用的,但有时最好获得作为一个OpenGL纹理图像。您可以使用BackgroundTextureAccess示例演示的方法。在这里,而不是让Vuforia渲染摄像机图像每一帧,你注册一个Texture2D对象充满相机像素每一帧。见Readme。txt附带的示例(在资产文件夹)两种方式渲染相机图像使用这种方法。
参考资料
https://developer.vuforia.com/resources/dev-guide/unity-camera-image-access
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
相关文章推荐
- Unity生命周期
- Unity3D游戏开发之Unity3D场景编辑器扩展开发
- Unity5 新功能解析--物理渲染与standard shader
- Unity3D Rigidbody详解
- Unity3D Shaderlab 学习记录
- Unity Vector3.Slerp() 球形插值详解
- Unity Vector3.Lerp()与Vecotr3.MoveTowards()方法区别
- Unity接口函数Vector3.Project()
- 【Unity】【翻译搬运】使用WheelColliders做出稳定真实的车
- Unity内存申请和释放
- Cg shader using additive blending
- Unity (疑似)BUG LayerMask GetMask Default
- Unity3D 学习笔记2——“工具在手,天下我有”
- OSX平台下使用Jenkins自动发布Unity之iOS程序与补丁
- Windows平台下使用Jenkins自动发布Unity之Android程序与补丁
- Unity 编辑器中获取GameView的分辨率
- Unity3D 学习笔记1——序言(简称“废话”)
- Cg shader using discard
- unity Dotween插件的简单介绍及示例代码
- Cg shading in world space