已知双目测距得到的特征点三维坐标,选取其中一个特定的点作为物体坐标的原点,例如得到了人脸中一些特定点的三维坐标,选取鼻尖为坐标原点得到了特征点在新坐标系下的坐标,再根据特征点在图像中的坐标和内参数矩阵,使用solvePnPRansac得到新坐标和摄像机坐标系间的旋转向量和平移向量,旋转向量经罗德里格斯变换后得到了旋转矩阵,平移向量严格来说应该为新坐标系中的原点(例如鼻尖)在摄像机坐标系下的坐标,但结果显示在x方向上有较大的误差,请问这是怎么回事?还是我的理解有问题?希望做过这方面工作的小伙伴们给指点一下!谢谢!
请问楼主问题解决了吗
现在问题基本解决了,测到的距离误差大概是在1~2cm左右,我当时是发现摄像机标定的结果不太理想,又重新标定了一下摄像机,希望能给后来的小伙伴们一些思路吧。
我计算出来的R数值很大,内参是人家提供的,就连2D-3D也有函数,传进去的顺序、3D都没问题,不知道啥原因
请问我在使用solvePnPRANSAC函数时出现这个错误,换了几种匹配方法还是在不同的照片对时出现这个错误,该怎么解决?
terminate called after throwing an instance of 'cv::Exception'
what(): OpenCV(3.4.7) /home/xxx/Downloads/opencv-3.4.7/opencv-3.4.7/modules/calib3d/src/calibration.cpp:1097: error: (-2:Unspecified error) in function 'void cvFindExtrinsicCameraParams2(const CvMat*, const CvMat*, const CvMat*, const CvMat*, CvMat*, CvMat*, int)'
DLT algorithm needs at least 6 points for pose estimation from 3D-2D point correspondences. (expected: 'count >= 6'), where
'count' is 5
must be greater than or equal to
'6' is 6