【发布时间】:2016-04-30 05:38:16
【问题描述】:
我想要做的是将线性轴系统(轴坐标)与照片的图像像素匹配。首先,我想使用相应的 2D 轴坐标(z=0 平面中的 3D 坐标)使用圆圈网格来校准相机。这样做一次,相机就稳定了。稍后我想在图像中找到轮廓并获取它们对应的轴坐标。在 Python 中我使用过:
ret, corners = cv2.findCirclesGrid(gray, (16,8))
imgpoints.append(corners)
ret, mtx, dist, rvecs, tvecs = cv2.calibrateCamera(objpoints, imgpoints, gray.shape[::-1],None,None)
在objpoints中我放了对应的坐标。例如
objp[:,:2] = np.mgrid[0:16,0:8].T.reshape(-1,2)
objpoints.append(objp)
我知道我可以使用 projectPoints 来获取图像像素中的轴坐标点。但我想做相反的事情并从图像像素中获取轴坐标。我在这里阅读了很多关于这个主题的stackoverflow,但我没有找到明确的答案。从我的理解是我必须不扭曲我的图片并使用solvePnP来获取相机坐标。我不得不承认我不明白如何解释这些步骤。我不确定哪个图像应该不失真(我的用于校准的圆形网格或我稍后处理的图像)以及如何将它与solvePnP结合起来。或者甚至可以在不扭曲完整图像的情况下只扭曲轮廓点?我也不知道如何从solvePnP的结果中获取图像像素的位置。此外,我需要通过至少 4 个点来解决即插即用,但我想要的是转换单点。也许我理解错了,我需要做一些完全不同的事情。 非常感谢您的帮助。
【问题讨论】: