我会尝试尽可能详细地提出这个问题。
在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()doc: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))
感谢您的帮助, 罗文</ p>
答案 0 :(得分:0)
断言失败错误nimages = .....只是矩阵或向量的大小(该方法接受)的问题,它们被用作imagePoints,imagePoints2和objectPoints的参数。这看起来很明显,但我在尝试将这些参数保存到xml文件并正确读取它时遇到了令人沮丧的时间。
我通过将stereoCalibrate,stereoRectify和视差图代码与我的校准相结合,将这些矢量保存为全局变量,从而笨拙地绕过这个问题。这不是处理这个问题的最好方法,因为我的代码很繁琐且很大,但我认为一些答案总比没有答案好。
谢谢, 罗文</ p>