我想要做的是将线性轴系统(轴坐标)与照片的图像像素进行匹配。首先,我想要使用相应的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)在objpoint中,我输入了相应的坐标。例如。
objp[:,:2] = np.mgrid[0:16,0:8].T.reshape(-1,2)
objpoints.append(objp)代码或多或少来自本教程:http://opencv-python-tutroals.readthedocs.org/en/latest/py_tutorials/py_calib3d/py_calibration/py_calibration.html
我知道我可以使用projectPoints来获取图像像素中轴坐标中的一个点。但我想做相反的事情,并从图像像素获得轴坐标。我在这里读了很多关于这个话题的stackoverflow,但我没有找到一个明确的答案。从want我所理解的是,我必须使我的图片不失真,并使用solvePnP来获得相机坐标。我必须承认,我不明白如何解释这些步骤。我不确定哪个图像应该是不失真的(用于校准的圆形网格或我稍后处理的图像),以及如何将其与solvePnP组合。或者,有没有可能仅仅不扭曲轮廓线的点而不扭曲完整的图像?我也不知道如何从solvePnP的结果中获得图像像素的位置。此外,我需要将至少4个点传递给solvePnP,但我想要的是转换单个点。也许我理解错了什么,我需要做一些完全不同的事情。我将非常感谢你的帮助。
发布于 2016-04-30 05:38:17
好了,抱歉,各位。问题解决了。我对整个概念的理解是错误的。我已经从校准程序中得到了相机的姿势。我计算了一条击中z=0平面的光线,现在我得到了正确的三维点。在这样做之前,我也使用了无失真的点,它工作得很好。也许这也可以帮助有同样问题的人。
https://stackoverflow.com/questions/36901126
复制相似问题