我正在使用OpenCVs solvePnP来获取相机的姿势/位置。 我这样做是通过使用用户选择的点,在已校准的图像上并应用了径向和切向失真的修正。
然而,似乎solvePnP()除了在图像中选择的点之外还将失真系数作为输入,我想这意味着SolvePnP将失真修复应用于作为函数输入的点。
这会在我的程序中产生一个小错误,因为源图像已经被桶扭曲了,对吗?
如果是这样,我怎样才能使solvePnP()忽略barreldistortion?我可以传递失真系数设置为1的矢量吗?或者我应该将所有值设置为0? 其他一些方式?
答案 0 :(得分:4)
过去我刚刚传递了一个空的cv :: Mat
cv::solvePnP(world_points, image_points, camera_mat, cv::Mat(), rotation_vector, translation_vector);
documentation表示如果你传递NULL,它会将所有系数设置为0。