所以我已经知道 3D 相机位置和世界框架中物体的位置和大小,以及之前相机校准的相机矩阵和畸变系数。
我需要计算的是物体的二维图像坐标。假设对象是一个具有世界位置 objPos 和半径 objRad 的球体,因此我要为其找到坐标的图像将是图像位置 的圆imgPos 和半径 imgRad。
我该怎么做?
干杯
最佳答案
在 OpenCV 中有一个函数可以在(相机)图像上投影 3D 坐标 - projectPoints在我看来,您拥有调用此函数所需的一切。参数是:
- 要投影的 3D 坐标
- 相机旋转 - rvec
- 相机的位置 - tvec
- 相机矩阵 - 来自您的校准
- 相机畸变系数 - 来自您的校准
- 生成的 2D 图像坐标
如果您有 4x4 矩阵形式的外部相机参数,则必须从中提取 rvec 和 tvec (see here)。
以您的示例为例:我将生成具有相应半径的此类球体的 3D 坐标。在下一步中,我将使用上述方法投影这些 3D 坐标。
关于c++ - OpenCV (C++) - 从已知的 3D 对象和相机位置计算图像的 2D 坐标,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47631875/