首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >opencv -简单2D <-> 2D变换

opencv -简单2D <-> 2D变换
EN

Stack Overflow用户
提问于 2016-04-28 05:20:38
回答 1查看 149关注 0票数 0

我想要做的是将线性轴系统(轴坐标)与照片的图像像素进行匹配。首先,我想要使用相应的2D轴坐标( z=0平面中的3D坐标)的圆网格来校准相机。这是完成一次,相机是稳定的。稍后,我想在图像中找到轮廓线,并获得它们对应的轴坐标。在Python中,我使用了:

代码语言:javascript
复制
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中,我输入了相应的坐标。例如。

代码语言:javascript
复制
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,但我想要的是转换单个点。也许我理解错了什么,我需要做一些完全不同的事情。我将非常感谢你的帮助。

EN

回答 1

Stack Overflow用户

发布于 2016-04-30 05:38:17

好了,抱歉,各位。问题解决了。我对整个概念的理解是错误的。我已经从校准程序中得到了相机的姿势。我计算了一条击中z=0平面的光线,现在我得到了正确的三维点。在这样做之前,我也使用了无失真的点,它工作得很好。也许这也可以帮助有同样问题的人。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/36901126

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档