【问题标题】:In opencv's solvePnP, what should I pass for objectPoints?在opencv的solvePnP中,我应该为objectPoints传递什么?
【发布时间】:2016-06-24 12:27:25
【问题描述】:

OpenCV docs for solvePnp

在增强现实应用程序中,我检测到场景中的图像,所以我知道 imagePoints,但我正在寻找的对象 (objectPoints) 是一个虚拟标记,只是存储在内存中以在场景中搜索,所以我不知道不知道它在太空中的什么地方。
我正在阅读的书(Mastering OpenCV with Practical Computer Vision Projects)通过它,好像标记是一个 1x1 矩阵,它工作正常,怎么样?
solvePnP 不需要知道对象的大小及其投影,以便我们知道应用了多少比例?

【问题讨论】:

    标签: opencv computer-vision augmented-reality pose-estimation


    【解决方案1】:

    假设您正在寻找一个物理对象,您应该将模型上点的 3D 坐标传递给(通过投影)映射到图像中的 2D 点。您可以使用任何参考系,solvePnp 的结果将为您提供相机在该参考系中的位置和方向。

    如果您想获取相机空间中的对象位置/方向,则可以通过从 solvePnp 获得的变换的逆进行变换,以便将相机移动到原点。

    例如,对于大小为 2x2x2 的立方体对象,可见角可能类似于:{-1,-1,-1},{1,-1,-1},{1,1,-1}.....

    【讨论】:

      【解决方案2】:

      您必须传递要与图像映射的真实世界对象的 3D 坐标。缩放和旋转值取决于您使用的坐标系。

      这并不像听起来那么难。有关头部姿势估计,请参阅 this blog post。有关代码的更多详细信息。

      【讨论】:

        猜你喜欢
        • 2018-12-29
        • 1970-01-01
        • 2022-01-14
        • 2019-09-26
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多