gpt4 book ai didi

c++ - OpenCV calibrateCamera 断言失败(ni == ni1)

转载 作者:太空宇宙 更新时间:2023-11-03 23:17:51 25 4
gpt4 key购买 nike

我正在使用 VisualStudio 2010 和 OpenCV 3.0。我想校准相机,我遇到的问题与 this 中描述的基本相同去年发的帖子,一直没回复。我正在调用 calibrateCamera,我收到错误“在 cv::collectCalibrationData 中断言失败(ni == ni1)”。

出现此错误的代码行是:

double rms = calibrateCamera(objectPoints, imagePoints, imageSize, cameraMatrix, distCoeffs, rvecs, tvecs, s.flag | CALIB_FIX_K4 | CALIB_FIX_K5);

我检查了 objectPoints 和 imagePoints 的大小,它们是相同的。好像是vector到InputArrayOfArrays的转换出错了。我已经编写了下一个代码来找出它:

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
174912
16
788167652
111826623

当我倾向于认为它应该打印下一个时:

5
5
48
48
48
48
48
48

正如我所描述的,每次我运行程序时它都会出现一个随机整数——它们不一致并且永远不会彼此相等。我不确定为什么 collectCalibrationData 得到的 vector 大小值错误,以及为什么将 vector 转换为 InputArrayofArrays 似乎会改变它们的大小。对此有什么想法吗?

提前致谢。

最佳答案

我用 Cmake 重建库后解决了这个问题。我使用的是 OpenCV 3.0。

关于c++ - OpenCV calibrateCamera 断言失败(ni == ni1),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36151942/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com