C++ 从对象的图像坐标获取对象的世界坐标

C++ 从对象的图像坐标获取对象的世界坐标,c++,opencv,computer-vision,signal-processing,camera-calibration,C++,Opencv,Computer Vision,Signal Processing,Camera Calibration,我一直遵循文档使用OpenCV。在下面的公式中,我成功地计算了内在矩阵和外在矩阵(我使用solvePnP()过程获得了这些矩阵)。因为,物体躺在地上,我用Z=0代替。然后,我移除了外在矩阵的第三列,并将其与内在矩阵相乘,得到一个3X3投影矩阵。我取它的倒数,然后乘以图像坐标,即su,sv和s. 然而,世界坐标中的所有点似乎偏离了1毫米或更小,因此我得到的坐标不是那么精确。有人知道我哪里会出错吗 多亏了摄像机校准可能总是有点不准确,因为对于2张以上的校准图像,不是从校准图像获得方程系统的一个真实

我一直遵循文档使用OpenCV。在下面的公式中,我成功地计算了内在矩阵和外在矩阵(我使用solvePnP()过程获得了这些矩阵)。因为,物体躺在地上,我用Z=0代替。然后,我移除了外在矩阵的第三列,并将其与内在矩阵相乘,得到一个3X3投影矩阵。我取它的倒数,然后乘以图像坐标,即su,sv和s.

然而,世界坐标中的所有点似乎偏离了1毫米或更小,因此我得到的坐标不是那么精确。有人知道我哪里会出错吗


多亏了

摄像机校准可能总是有点不准确,因为对于2张以上的校准图像,不是从校准图像获得方程系统的一个真实解,而是获得误差最小的解

同样的道理也适用于中国。您可以使用三种方法中的一种来优化给定方程组的许多可能解

我不明白你是如何从中得到内在矩阵和外在矩阵的,它用来计算物体在相机坐标系中的旋转和平移

您可以做什么:

  • 尝试获得更好的内在参数
  • 尝试其他方法或检查