我正在使用 OpenCVssolvePnP 来获取相机的姿势/位置。 我通过在已校准并已应用径向和切向畸变修复的图像上使用用户选择的点来执行此操作。
但是,除了图像中选择的点之外,solvePnP() 似乎还采用畸变系数作为输入,我想这意味着 SolvePnP 对作为函数输入给出的点应用畸变修复。
这会在我的程序中产生一个小错误,因为源图像已经发生了桶形扭曲,对吧?
如果是这样,我怎样才能让solvePnP()忽略桶形失真?我可以传递一个失真系数设置为 1 的向量吗?或者我应该将所有值设置为 0? 还有其他方法吗?
最佳答案
过去我刚刚通过了一个空的 cv::Mat
cv::solvePnP(world_points, image_points, camera_mat, cv::Mat(), rotation_vector, translation_vector);
documentation表示如果您传递 NULL,它会将所有系数设置为 0。
关于OpenCV 求解 PnP 桶形失真,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14502777/