OpenCV(C ++) - 根据已知的3D对象和摄像机位置计算图像的2D坐标

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了OpenCV(C ++) - 根据已知的3D对象和摄像机位置计算图像的2D坐标相关的知识,希望对你有一定的参考价值。

所以我已经知道了3D摄像机的位置以及世界框架中物体的位置和大小,以及相机矩阵和先前摄像机校准的失真系数。

我需要解决的是对象的2D图像坐标。让我们说对象是一个具有世界位置objPos和半径objRad的球体,所以我想找到的坐标图像将是一个图像位置imgPos和radius imgRad的圆。

我该怎么做呢?

干杯

答案

在OpenCV中存在一个在(相机)图像上投影3D坐标的功能 - projectPoints在我看来,您拥有调用此功能所需的一切。论点是:

  1. 要投影的3D坐标
  2. 旋转你的相机 - rvec
  3. 相机的位置 - tvec
  4. 相机矩阵 - 来自您的校准
  5. 相机失真系数 - 来自您的校准
  6. 产生的2D图像坐标

如果你有4x4矩阵形式的外在相机参数,你必须从中提取rvec和tvec(see here)。

举例来说:我会生成具有相应半径的球体的3D坐标。在下一步中,我将使用上述方法投影这些3D坐标。

以上是关于OpenCV(C ++) - 根据已知的3D对象和摄像机位置计算图像的2D坐标的主要内容,如果未能解决你的问题,请参考以下文章

OpenCV中的特征匹配+单应性以查找对象

使用 OpenCV 检测图像中已知形状/对象的方法

使用 OpenCV C++ 查找已知对象

用于在 Unity3D 中定位 3D 对象的 OpenCV 旋转(Rodrigues)和平移向量

OpenGL 与 OpenCV 相结合的计算机视觉教程 [关闭]

在 Android 中使用 metaio 在 openCV 中渲染 3D 对象