OpenCV项目3D坐标到2d摄像机坐标

时间:2016-04-30 12:36:09

标签: c++ opencv 3d camera

我有一个物体的3D世界坐标,我想在相机2D平面上得到它的坐标。 我已经使用cv::calibrateCamera校准了相机,因此我有相机矩阵 distortionCoeffs

为了将3D点投影到2d摄像机坐标,我使用cv::projectPointsDocumentation说:

  

void projectPoints(InputArray objectPoints ,InputArray rvec ,   InputArray tvec ,InputArray cameraMatrix ,InputArray distCoeffs ,   OutputArray imagePoints ,OutputArray jacobian = noArray(),double    aspectRatio = 0

如何获得rvec / tvec并且我的方法是正确的? calibrateCamera给了我rvecstvecs,但它们适用于每个输入棋盘 - 我想,它们是棋盘的旋转和平移,而不是相机的旋转和翻译。

1 个答案:

答案 0 :(得分:2)

由于我有投影矩阵P),我可以从3D坐标{{计算相机平面中的2D坐标(x) 1}}(使用齐次坐标):

  

x(u,v,w)= P * X(x1,x2,x3,w)

我只是在整改上遇到问题,所以我没有得到我的2D图像的精确投影。见这里:OpenCV stereo vision 3D coordinates to 2D camera-plane projection different than triangulating 2D points to 3D