Assertion failed (ni > 0 && ni == ni1) in collectCalibrationData

被这个错误折腾两天

我使用的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 的长度 却返回错误的值

需要继续看下 源码

 暂时先保存到这里


你可能感兴趣的:(Assertion failed (ni > 0 && ni == ni1) in collectCalibrationData)