如何使用OpenCV从2D获取3D位置

6
我正在尝试从单个摄像头的图像投影中获取物体的三维坐标和方向,使用openCV。我已经阅读了相关资料并得出以下步骤:校准图像以获得旋转矩阵、平移矩阵和矩阵k。
我在此处找到了很多使用棋盘进行校准的例子。
但是我的问题是:一旦这些参数被获取,如何获取任何其他物体的位置?我没有找到任何完整的例子,只有我不太理解的数学解释。
例如这个示例,但是需要使用这些矩阵来精确地获取方向。
我已经有了分割好的图像,并且可以确定角点的位置。
我想要实现的效果类似于这个视频。
谢谢。
2个回答

3
您可以使用cv2.solvePnPRansac来获取旋转和平移向量,然后使用cv2.projectPoints将3D点投影到平面上。这里有一篇完整的教程,您可以在这里找到。(互联网档案馆)

2
你需要了解对象模型在其坐标系中的位置,才能通过解决透视三点问题(即使用OpenCV中包含的cv::solvePnP或cv::solvePnPRansac函数)来检索对象的位置。请尝试研究视觉基准标记和这些特定类型参考对象的姿态估计。标记是用于执行此操作的对象。这是从原始PnP问题开始的很好的简化,你可以更好地理解发生了什么。在了解底层发生的情况后,你可以对任何拥有模型的对象进行操作。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接