1

我正在尝试创建由安装在 Valve Index VR 耳机上的立体相机创建的图像的视差图。我正在使用 OpenVR 和 OpenCV。OpenVR 允许使用 IVRTrackedCamera 接口访问摄像机。为了执行 OpenCV StereoBM,需要对左右图像进行校正。

我的第一个问题:
OpenVR 允许使用 GetVideoStreamFrameBuffer() 获取帧。此方法允许传递 EVRTrackedCameraFrameType,Distorted、Undistorted 或 MaximumUndistorted。不同的 FrameType 是什么意思?当使用 Undistorted 或 MaxUndistorted 帧类型时,我可以假设帧已经被校正到一个公共平面上吗?

第二个问题:
如果框架还没有被校正到一个公共平面上,怎么做?使用 OpenVR,我可以使用 GetCameraIntrinsics() 为每个单独的相机获取相机内在函数,再次提供 EVRTrackedCameraFrameType。我还可以使用 GetArrayTrackedDeviceProperty(Prop_CameraDistortionCoefficients_Float_Array) 获取每个相机的失真参数。现在,我为 OpenCV 的 stereoRectify() 缺少的两个参数是:

R – Rotation matrix between the coordinate systems of the first and the second cameras.
T – Translation vector between coordinate systems of the cameras.

是否可以从 OpenVR 获取这些参数?

4

0 回答 0