OpenCV将三维坐标投影到二维摄影机坐标

OpenCV project 3D coordinates to 2d camera coordinates

本文关键字:坐标 二维 摄影机 三维 投影 OpenCV      更新时间:2023-10-16

我有一个物体的三维世界坐标,我想在2D平面上获得它的坐标。我已经使用cv::calibrateCamera校准了相机,这样我就有了相机矩阵畸变系数

为了将三维点投影到二维相机坐标,我使用cv::projectPoints。文件显示:

void projectPoints(InputArrayobjectPoints、InputArrayrvec,InputArraytvec、InputArraycameraMatrix和InputArraydistCoeffs,OutputArrayimagePoints,OutputArray>jacobian=noArray()、doubleaspectRatio=0

我如何获得rvec/tvec?我的方法正确吗calibrateCamera给了我rvecstvecs,但它们是针对每个输入棋盘图像的,我想,它们是棋盘的旋转和平移,而不是相机的旋转和移动。

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

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

我只是在纠正时遇到了问题,所以我无法获得2d图像的精确投影。请参阅此处:OpenCV立体视觉3D坐标到2D相机平面投影不同于将2D点三角化到3D