我有一个物体的3D世界坐标,我想在相机2D平面上得到它的坐标。
我已经使用cv::calibrateCamera
校准了相机,因此我有相机矩阵和 distortionCoeffs 。
为了将3D点投影到2d摄像机坐标,我使用cv::projectPoints
。 Documentation说:
void projectPoints(InputArray objectPoints ,InputArray rvec , InputArray tvec ,InputArray cameraMatrix ,InputArray distCoeffs , OutputArray imagePoints ,OutputArray jacobian = noArray(),double aspectRatio = 0 )
如何获得rvec / tvec并且我的方法是正确的? calibrateCamera
给了我rvecs
和tvecs
,但它们适用于每个输入棋盘 - 我想,它们是棋盘的旋转和平移,而不是相机的旋转和翻译。
答案 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