Opencv 使用solvepnp时,模型坐标和图像坐标是否相同?

Opencv 使用solvepnp时,模型坐标和图像坐标是否相同?,opencv,slam,odometry,Opencv,Slam,Odometry,目前,我正在尝试实现一个相机姿态跟踪系统。我有一组前一帧的模型坐标点(3D)和当前帧的图像坐标(2D) 我还设置了一个身份矩阵(4x4)作为相机的初始姿势。对于每个新计算的rvec和tvec,我使用rodrigues将rvec转换为3x3旋转矩阵,然后创建4x4同质变换矩阵,并将其与之前的姿势相乘 旋转似乎工作正常,但矩阵中的平移向量似乎仅在旋转时移动,而在平移时不移动,即它表示旋转 我的模型坐标系和图像坐标系是否相同 编辑:我正在尝试使用RGBD相机的3D-2D对应(视觉里程计)跟踪相机位置

目前,我正在尝试实现一个相机姿态跟踪系统。我有一组前一帧的模型坐标点(3D)和当前帧的图像坐标(2D)

我还设置了一个身份矩阵(4x4)作为相机的初始姿势。对于每个新计算的rvec和tvec,我使用rodrigues将rvec转换为3x3旋转矩阵,然后创建4x4同质变换矩阵,并将其与之前的姿势相乘

旋转似乎工作正常,但矩阵中的平移向量似乎仅在旋转时移动,而在平移时不移动,即它表示旋转

我的模型坐标系和图像坐标系是否相同

编辑:我正在尝试使用RGBD相机的3D-2D对应(视觉里程计)跟踪相机位置


更新:解决了这个问题。我似乎选错了变换矩阵的列

不,不可能,因为第一列是3d空间,第二列是2d空间。“上一帧的模型坐标”是什么意思?“照相机的初始姿势”是什么意思?在solvePnp中,模型姿势是为静态摄影机估计的(之后可以转换为反转场景)。@Mika我试图在一段时间内跟踪摄影机位置,因此初始姿势只是指起始位置,即身份。我正在使用前一帧和当前帧之间的对应关系来查找相机在x时间内移动了多少。请确保将solvePnp结果转换为相机变换,而不是对象变换。你能分享你的代码吗?@Mika我已经解决了这个错误。意外地占据了变换矩阵的倒数第二列。现在一切似乎都正常了:D谢谢!