2015-07-03 453 views
0

我使用OpenCv 2.4.10(C++ API)中的fisheye :: calibrate()函数来校准鱼眼相机。当我使用针孔摄像机的标准cv :: calibrateCamera()功能时,所有功能都能正常工作。如果使用与相同的输入(两个函数具有相同的签名)的鱼眼对应部分(即fisheye :: calibrate()),则会出现分段错误错误。 这是一个已知的问题?可能是什么问题呢?使用OpenCv fisheye :: calibrate()函数时的分段错误

回答

1

它看起来已经有一段时间了,但是当我偶然发现这个尝试解决同样的问题时,我会把我在这里找到的解决方案放在帮助后面的那些解决方案上。

看起来这个函数有一个错误,这意味着它无法处理输入和输出数组的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; 

我希望能帮助那里的人!