从2d图像像素获取3d坐标系中的x,y

时间:2012-08-22 11:57:58

标签: c++ opencv camera-calibration pose-estimation

使用固定位置的相机我必须跟踪运动中的物体并将其定位在一些预先选择的坐标系中。想法是在具有已知高度的对象顶部放置特定颜色标记,因此Z坐标将是已知的。完成颜色跟踪后,我需要从u和v找到颜色的图像坐标中找出X和Y.我已经完成了相机校准,我打算使用cv :: solvePnP来获取旋转和平移向量。另外,我学习了颜色跟踪here并从中编写了一个C ++ API。

我已经找到了类似的问题here,并从中学到了很多,但不同之处在于我只需要评估X和Y,因为Z坐标是已知的(之前测量过)。如何使用预先指定的Z获得那些X和Y坐标?谢谢你的帮助!

2 个答案:

答案 0 :(得分:2)

由于您已校准(我假设在z = 0),您可以使用相机,平移和旋转矩阵从像素到rw坐标。

  1. 你找到一个你想知道的坐标的点。 (颜色标记)
  2. 您查找此点的x和y坐标(假设z = 0)
  3. 您可以计算x和y的角度(相对于原理点)
  4. 您可以使用这些角度计算z = objectHeight
  5. 时的x和y

答案 1 :(得分:0)

在校准并获得外在和内在参数后,您可以使用有关

的信息
  • u,v coordinates
  • z坐标

在世界坐标中找到X e Y:

  • Pc = R * Pw + T

其中Pc凸轮坐标,Pw世界坐标,R旋转矩阵和T平移矢量。