Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/137.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/visual-studio-2012/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ OpenCV CalibleCamera断言失败(ni==ni1)_C++_Opencv_Camera Calibration_Assertion - Fatal编程技术网

C++ OpenCV CalibleCamera断言失败(ni==ni1)

C++ OpenCV CalibleCamera断言失败(ni==ni1),c++,opencv,camera-calibration,assertion,C++,Opencv,Camera Calibration,Assertion,我将VisualStudio 2010与OpenCV 3.0一起使用。我想校准一个相机,我有基本上相同的问题,从去年后描述,但它没有得到回应。我正在调用CalibleCamera,并在cv::CollectionCalibrationData中得到错误“断言失败(ni==ni1)” 获取此错误的代码行是: double rms = calibrateCamera(objectPoints, imagePoints, imageSize, cameraMatrix, distCoeffs, rve

我将VisualStudio 2010与OpenCV 3.0一起使用。我想校准一个相机,我有基本上相同的问题,从去年后描述,但它没有得到回应。我正在调用CalibleCamera,并在cv::CollectionCalibrationData中得到错误“断言失败(ni==ni1)”

获取此错误的代码行是:

double rms = calibrateCamera(objectPoints, imagePoints, imageSize, cameraMatrix, distCoeffs, rvecs, tvecs, s.flag | CALIB_FIX_K4 | CALIB_FIX_K5);
我已经检查了objectPoints和imagePoints的大小,它们是相同的。这似乎是将矢量转换为输入阵列射线时的一个错误。我已经编写了下一个代码来找到它:

cv::InputArrayOfArrays IMGPOINT = imagePoints; std::cout << (int) IMGPOINT.total() << std::endl;
cv::InputArrayOfArrays OBJPOINT = objectPoints; std::cout << (int) OBJPOINT.total() << std::endl;

for( int i = 0; i < 3; ++i ){
    std::cout << OBJPOINT.getMat(i).checkVector(3, CV_32F) << std::endl;
    std::cout << IMGPOINT.getMat(i).checkVector(2, CV_32F) << std::endl;
}
当我倾向于认为它应该打印下一个:

5
5
48
48
48
48
48
48
正如我所描述的,每次我运行程序时都会出现一个随机整数——它们不一致,也永远不相等。我不确定为什么CollectionCalibrationData获取的向量大小值错误,以及为什么将向量转换为InputArrayOfarray似乎会改变它们的大小。有什么想法吗


提前感谢。

在使用Cmake重建LIB后,我解决了这个问题。我使用了OpenCV 3.0。

在使用Cmake重建LIB后,我解决了这个问题。我使用了OpenCV 3.0

5
5
48
48
48
48
48
48