它看起来已经有一段时间了,但是当我偶然发现这个尝试解决同样的问题时,我会把我在这里找到的解决方案放在帮助后面的那些解决方案上。
看起来这个函数有一个错误,这意味着它无法处理输入和输出数组的Mat参数。当我使用以下签名时,它开始工作。
double cv::fisheye::calibrate (vector<vector<Point3f> > objectPoints, vector<vector<Point2f> > imagePoints, const Size &image_size, Matx33d K, Vec4d D, vector<Vec3d> rvecs, vector<Vec3d> tvecs, int flags=0, TermCriteria criteria=TermCriteria(TermCriteria::COUNT+TermCriteria::EPS, 100, DBL_EPSILON))
值得庆幸的垫子类型有做转换,所以在我的情况(我已经在正确的格式imagePoints反正)我只是能够做一些很好的方法:
distCoeffs = Mat::zeros(4, 1, CV_64F);
Matx33d tempCameraMatrix = cameraMatrix;
Vec4d tempDistCoeffs = distCoeffs;
我希望能帮助那里的人!