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

时间:2017-12-04 11:02:40

标签: c++ opencv camera

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

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

我将如何做到这一点?

干杯

1 个答案:

答案 0 :(得分:1)

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

  1. 您要投影的3D坐标
  2. 相机旋转 - rvec
  3. 相机的位置 - tvec
  4. 相机矩阵 - 来自您的校准
  5. 相机失真系数 - 来自您的校准
  6. 产生的2D图像坐标
  7. 如果您的外部相机参数为4x4矩阵形式,则必须从中提取rvec和tvec(see here)。

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