【问题标题】:Persistent Error when stereoCalibrate() method in opencv 3.0opencv 3.0 中的 stereoCalibrate() 方法时出现持续错误
【发布时间】:2015-09-26 12:55:41
【问题描述】:

我会尽量让这个问题具体化。

在 opencv 3.0 中调用 stereoCalibrate() 时,我收到如下错误消息:

Assertion failed <nimages > 0 && nimages == <int>imagePoints1.total() && <!imgPtMat2 || nimages == <int>imagePoints2.total(()) in cv::collectCalibrationData

我已经多次检查参数,我的 CameraDistortion、cameraMatrix 和 imagePoints 都是从早期的 cameraCalibrate 中读取的值,并且与两个相机的尺寸一致。

我有标志 CV_CALIB_ZERO_TANGENT_DIST 和 CV_CALIB_FIX_FOCAL_LENGTH,并且一直在尝试不同的组合。

我也玩过 imageSize,让它依赖于我想在立体校准后计算视差图的图像大小。

我最好的猜测是我将一个虚假的 objectPoints 矩阵传递给这个参数,因为我似乎无法将在 cameraCalibrate 中计算的向量向量以可读的方式保存到 xml 文件中。

这里是 stereoCalibrate() 文档的链接:http://docs.opencv.org/3.0.0/d9/d0c/group__calib3d.html#ga246253dcc6de2e0376c599e7d692303a

这是我的方法调用:

stereoCalibrate(test, Image_Points, Image_Points2, Camera_Matrix, Distortion_Coefficients, Camera_Matrix2, Distortion_Coefficients2, imgLeft.size(), R, T, E, F, CV_CALIB_FIX_FOCAL_LENGTH && CV_CALIB_ZERO_TANGENT_DIST, TermCriteria9(CV_TERMCRIT_ITER + CV_TERMCRIT_EPS, 30, 1e-6))

感谢您的帮助, 罗文

【问题讨论】:

    标签: c++ opencv calibration


    【解决方案1】:

    断言失败错误 nimages =..... 只是用作 imagePoints、imagePoints2 和 objectPoints 参数的矩阵或向量(该方法接受任何一个)大小的问题。这似乎很明显,但是我在尝试将这些参数保存到 xml 文件并正确读取它们时遇到了令人沮丧的时间。

    我笨拙地绕过了这个问题,将我的 stereoCalibrate、stereoRectify 和视差图代码与我的校准相结合,并将这些向量保存为全局变量。这不是处理这个问题的最佳方法,因为我的代码繁重而沉重,但我认为有答案总比没有答案好。

    谢谢, 罗文

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-10-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-10-05
      相关资源
      最近更新 更多