OpenCV(C ++) - 根据已知的3D对象和摄像机位置计算图像的2D坐标
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了OpenCV(C ++) - 根据已知的3D对象和摄像机位置计算图像的2D坐标相关的知识,希望对你有一定的参考价值。
所以我已经知道了3D摄像机的位置以及世界框架中物体的位置和大小,以及相机矩阵和先前摄像机校准的失真系数。
我需要解决的是对象的2D图像坐标。让我们说对象是一个具有世界位置objPos和半径objRad的球体,所以我想找到的坐标图像将是一个图像位置imgPos和radius imgRad的圆。
我该怎么做呢?
干杯
答案
在OpenCV中存在一个在(相机)图像上投影3D坐标的功能 - projectPoints在我看来,您拥有调用此功能所需的一切。论点是:
- 要投影的3D坐标
- 旋转你的相机 - rvec
- 相机的位置 - tvec
- 相机矩阵 - 来自您的校准
- 相机失真系数 - 来自您的校准
- 产生的2D图像坐标
如果你有4x4矩阵形式的外在相机参数,你必须从中提取rvec和tvec(see here)。
举例来说:我会生成具有相应半径的球体的3D坐标。在下一步中,我将使用上述方法投影这些3D坐标。
以上是关于OpenCV(C ++) - 根据已知的3D对象和摄像机位置计算图像的2D坐标的主要内容,如果未能解决你的问题,请参考以下文章
用于在 Unity3D 中定位 3D 对象的 OpenCV 旋转(Rodrigues)和平移向量