我正在使用SolvePnPRansac定位纹理对象并检索相机姿势。我参考了以下帖子(amartin's question b_m's question,主要是nkint's question),它们说明了我用于将r和t转换为相机姿态/旋转的代码。
我使用cv.projectPoints可视化投影回来的输入时,solvePnP输出的t和r向量是正确的,并且返回了良好的像素匹配。这些大约关闭10-15像素。但是,相机的姿势大部分是正确的,但大约有50-100像素的偏离,这使我相信我的代码有些系统错误。
rot_matrix = cv2.Rodrigues(r)[0]
pose = -np.matrix(rot_matrix).T * np.matrix(t)
Rt = np.c_[rot_matrix, t]
euler = cv2.decomposeProjectionMatrix(Rt)[-1]
输出后,姿势和欧拉近似正确(模型显示在相机视图中),但所有内容均已移动。输出示例(原始视图覆盖新视图)如下所示。我如何才能更有效地调试它?非常感谢你!