我有两个右手坐标系。
OpenCV
正如您在黑色箭头中看到的那样,相机向下看正 $Z$ 轴。您可以忽略图表的其余部分。
OpenGL
虽然在此处不可见,但 OpenGL 中的相机俯视 -Z
轴。我想将 OpenCV 坐标系中相机前方的 3D 点转换为 OpenGL 中相机前方的 3D 点。
我试图用连接 R
的 4x4 矩阵来表示它和 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
,并创建一个 4x4 的 View 矩阵 M
与 R
和 T
.只需反转 M 的第 2 行和第 3 行,您将获得用于 OpenGL 渲染的 View 矩阵。
关于OpenCV 到 OpenGL 坐标系的变换,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44375149/