是否可以将 OpenCV 的 solvePNP 与 equirectangular图像一起使用?我有一个 equirectangular 图像,我在这个图像中有四个点(红点)和它们的像素坐标,然后我有 4 个对应[(0, 0, 0), (2, 0, 0), (2, 10, 0), (0, 10, 0)]
的世界点,例如如何估计相机姿势?
我尝试使用 OpenCV solvePnp
,但期望棕色相机模型的内在函数因此不起作用。这可以为球形相机完成吗?
是否可以将 OpenCV 的 solvePNP 与 equirectangular图像一起使用?我有一个 equirectangular 图像,我在这个图像中有四个点(红点)和它们的像素坐标,然后我有 4 个对应[(0, 0, 0), (2, 0, 0), (2, 10, 0), (0, 10, 0)]
的世界点,例如如何估计相机姿势?
我尝试使用 OpenCV solvePnp
,但期望棕色相机模型的内在函数因此不起作用。这可以为球形相机完成吗?
首先,您应该计算相机的内在参数,即焦距、光学中心和畸变参数,然后您可以计算相机的位姿。由于您的图像似乎是某种广角镜头,因此您应该使用此处所述的cv.calibrateCamera()。您应该在cv.calibrateCamera()方法中启用该标志,该方法计算失真参数,因为您的图像有很大的失真。CV_CALIB_RATIONAL_MODEL
现在棘手的部分 为了获得高质量的无失真图像,在校准相机之后,您应该使用覆盖整个图像的国际象棋图案,以便准确计算失真参数,因为最大的径向失真存在在图像的边缘。 此外,为了准确计算solvePnp 参数,您应该在图像上选择红点。
使用solvePnPRansac和 OpenCV文档进行相机 3D 重建。