被这个错误折腾两天
我使用的opencv 2.410
在 calibrateCamera 之前对前两个参数进行 assert
int nimages = (int)((cv::InputArrayOfArrays)objectPoints).total();
int i, j = 0, ni = 0, total = 0;
assert(nimages > 0 && nimages == (int)((cv::InputArrayOfArrays)imagePoints).total());
for( i = 0; i < nimages; i++ )
{
ni = ((cv::InputArrayOfArrays)objectPoints).getMat(i).checkVector(3, CV_32F);
// if( ni <= 0 )
// CV_Error(CV_StsUnsupportedFormat, "objectPoints should contain vector of vectors of points of type Point3f");
int ni1 = ((cv::InputArrayOfArrays)imagePoints).getMat(i).checkVector(2, CV_32F);
// if( ni1 <= 0 )
// CV_Error(CV_StsUnsupportedFormat, "imagePoints1 should contain vector of vectors of points of type Point2f");
std::cout << ni << " " << ni1 << std::endl;
//CV_Assert( ni == ni1 );
total += ni;
}
输出的 ni 和 ni1 的值明显对不上
所以才会出现这一错误 Assertion failed (ni > 0 && ni == ni1) in collectCalibrationData
跟到现在在checkVector这里 本应该返回某个 mat 的长度 却返回错误的值
需要继续看下 源码
暂时先保存到这里