我有两个右手坐标系。 OpenCV 如您所见,黑色箭头表示相机朝着正 $Z$ 轴拍摄。您可以忽略图表中的其余部分。 OpenGL 虽然在此处不可见,但 OpenGL 中的相机朝下看 -Z 轴。我想将 OpenCV 坐标系中相机前方的 3D 点转换为 OpenGL 中相机前方的 3D 点。 我试图用一个 4x4 的矩阵来连接 R、T 和底部的 0001。 到目前为止,我尝试了以下内容: 1 0 0 0 0 -1 0 0 0 0 -1 0 0 0 0 1 但是似乎它什么也没有做,OpenGL坐标系中没有任何显示。
OpenCV的相机坐标系为X向右,Y向下,Z向前。而OpenGL的相机坐标系为X向右,Y向上,Z向内。 使用solvePnP作为最常用的示例之一。您将获得一个3x3的旋转矩阵R和一个1x3的平移向量T,并使用R和T创建一个4x4的视图矩阵M。只需反转M的第二行和第三行,即可获得OpenGL渲染的视图矩阵。
[0,1,0]
)以查看它们是否被旋转。另一种双重检查方法是使用OpenCV viz来调试/可视化变换前后的点。 - api55