Appearance
获取摄像头数据
TIP
本章节将指导开发者通过 SDK 获取到 EZXR AR Glasses 的摄像头数据;
本节介绍如何使用 RGB 相机,获取数据或其他信息。
示例
可参考 RGBPreview,Recording, Tracking2D, SpatialComputing 等场景中关于 RGB 相机的使用
接口说明
TIP
- 使用 RGB 相机必须依赖 EZXRGlassSDK,Android 标准接口是访问不到 RGB 相机传感器的
- 使用 EZXRGlassSDK 进行 RGB 相关功能开发,可通过 NormalRGBCameraDevice 类实现打开/关闭 RGB 相机,获取当前图像数据等功能
### NormalRGBCameraDevice | ||
---|---|---|
API | 说明 | 备注 |
Void Open() | 打开 RGB 相机。 | |
Void Close() | 关闭 RGB 相机。 | |
bool IsStarted() | 判断 RGB 是否已经正常启动。 正常返回 true。 | |
bool getCurrentImage(ref EZVIOInputImage image, float[] intrinsic) bool getCurrentImage(ref EZVIOInputImage image, float[] intrinsic, EZVIOImageFormat specifiedFormat) | 获取当前帧图像。 通过'image'输出,默认格式为 YUV420_888/NV21, 通过’intrinsic‘输出内参(fx,fy,cx,cy,k1k2p1p2); 也可以获取指定图像格式的数据,目前仅支持指定 RGBA; 获取成功返回 true。 | 图像数据定义在 EZVIOInputImage.fullImg 中,传出为指针,默认数据格式为 YUV420_888(实际为 NV21)格式 |
bool isCameraMotionViolently() | 获取当前设备抖动状态,用于判断当前相机是否稳定,可辅助与一些依赖 RGB 稳定的应用场景 稳定则返回 true。 | |
Int32 GetRGBVideoTexture() | 获得 RGB 背景纹理 ID(GLES TextureId) 返回纹理 ID | |
void DrawRGBVideoFrame() void DrawRGBVideoFrame(IntPtr texturePtr) | 更新 RGB 背景纹理。 其中 DrawRGBVideoFrame()会自动创建纹理,创建后可通过 GetRGBVideoTexture()获取 DrawRGBVideoFrame(IntPtr)是传入纹理 ID 绘制 |
获取数据并完成绘制
创建预览环境并刷新背景
json
//获取RGB相机图像分辨率,目前为固定分辨率1280*960
CameraResolution cameraResolution = new CameraResolution();
NativeTracking.GetRGBCameraResolution(ref cameraResolution);
//创建材质
//创建预览平面
//绘制并获取纹理
//纹理由Native生成,再转化为unity Texture2D
rgbCameraDevice.DrawRGBVideoFrame();
m_VideoTexture = Texture2D.CreateExternalTexture(rgbCameraDevice.GetRGBVideoTexture());
//刷新背景
m_VideoTexture.UpdateExternalTexture((IntPtr)rgbCameraDevice.GetRGBVideoTexture());
创建纹理也可以换成由 Unity 创建纹理的方式,可以参考‘Recording’示例中 ARRenderRGB.cs 的处理
json
//Unity 创建纹理
m_VideoTexture = new Texture2D(screenWidth, screenHeight, TextureFormat.RGBA32, false);
//获得TexturePtr
IntPtr texturePtr = m_VideoTexture.GetNativeTexturePtr();
//传给相机更新背景
rgbCameraDevice.DrawRGBVideoFrame(texturePtr);
当前相机分辨率固定输出为 1280*960,如需其他分辨率,可联系易现获取支持。
可参考 RGB 支持分辨率:
(4000,3000),(3280,2460),(3264,2448),(3200,2400),(2592,1944),(2048,1536),(1920,1440),(1600,1200),(1440,1080),(1280,960),(1024,768),(800,600),(640,480),(320,240)。