【问题标题】:How to get the 3D position from a 2D with opencv如何使用opencv从2D获取3D位置
【发布时间】:2018-02-25 23:42:54
【问题描述】:

我正在尝试使用带有 openCV 的单个相机从投影到图像上获取对象的 3D 坐标和方向。 我一直在阅读,要遵循的步骤是:校准图像以获得除了矩阵 k 之外的旋转和平移矩阵。 我发现了很多带有棋盘的例子 --> https://littlecodes.wordpress.com/2013/06/24/calibracion-de-camaras-y-procesamiento-de-imagenes-ii/。 但我的问题是:一旦获得了这些参数,我如何获得任何其他对象的位置?我没有找到任何完整的例子,只有我不太理解的数学解释。 类似于this,但使用矩阵并能够以一定的精度获得方向。

我已经有了分割的图像,我可以定位角落的点。

我喜欢这样的东西:Video

问候和感谢。

【问题讨论】:

    标签: python opencv calibration


    【解决方案1】:

    您可以使用cv2.solvePnPRansac 获取旋转和平移矢量,然后使用cv2.projectPoints 将3d 点投影到平面。有一个完整的教程,你可以找到here.(Internet archive)

    【讨论】:

      【解决方案2】:

      您需要知道对象模型在其坐标中,以通过解决 Perspective-n-Point 问题(即使用 OpenCV 中包含的 cv::solvePnP 或 cv::solvePnPRansac 函数)来检索对象的位置。

      尝试研究这些特定类型的参考对象的视觉基准标记和姿势估计。标记是用于(也)执行此操作的对象。这是从原始 PnP 问题开始的一个很好的简化,您可以更好地理解发生了什么。在了解了幕后发生的事情之后,您可以对任何您拥有模型的对象执行此操作。

      【讨论】:

        猜你喜欢
        • 2017-01-16
        • 2015-02-12
        • 1970-01-01
        • 2017-02-08
        • 2017-06-20
        • 2020-06-12
        • 2018-06-07
        • 2020-12-28
        • 2022-01-07
        相关资源
        最近更新 更多