Skip to content

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拿不到数据,请确保预制体正确设置如下:

正确设置后,打开SRBackground组件,能在眼镜里看到RGB图像以背景显示