device和sensor相关
RGB功能点介绍
关于控制camera及获取RGB相机图像的接口,预制体为SRFrameManager
控制接口:(Assets\stARFrame\Scripts\SRFrameManager.cs)
//========================================================
//开启相机
//========================================================
public void OpenCamera(Action<string> cb);
//========================================================
//关闭相机
//========================================================
public bool CloseCameraDevice();
//========================================================
//相机数据获取回调
//========================================================
public event Action<SRCameraFrame> FrameReceived;
//========================================================
//主动获取相机数据
//========================================================
public bool TryGetLatestFrame(out SRCameraFrame cameraFrame)
关于相机数据获取回调的代码,可以参考(Assets\Recognition\SceneReco\Scripts\SRSceneSession.cs)
SRFrameManager m_frameManager = FindObjectOfType<SRFrameManager>();
m_frameManager.FrameReceived += UpdateSRFrame;
请注意,通过TryGetLatestFrame获取RGB数据,需要访问SRCameraFrame的imageData成员变量。SRCameraFrame.image为空
/// <summary>
/// 相机图像数据
/// </summary>
[MarshalAs(UnmanagedType.Struct)]
public SRImageData imageData;
相机数据类型为YUV 420(4:2:0),数据格式为NV21 byte[]数据。
可以参考Assets\Recognition\SceneReco\Scripts\MapSRCloudSceneReco.cs 的M_AddFrameData()了解如何使用imageData转出texture,或把眼镜RGB数据转换成byte[]传输。
也可以参考Assets\stARFrame\Scripts\Background\SRMaterialNV12.cs了解如何把眼镜RGB数据用Material在场景中显示图像。
另外,如果TryGetLatestFrame拿不到数据,请确保预制体正确设置如下:
.png)
正确设置后,打开SRBackground组件,能在眼镜里看到RGB图像以背景显示
.png)