Я постараюсь сделать этот вопрос как можно более конкретным.
При вызове stereoCalibrate () в opencv 3.0 я получаю сообщение об ошибке, подобное этому:
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))
Спасибо за любую помощь,
рябина
Ошибка подтверждения ошибки nimages = ….. была просто проблемой с размерами матриц или векторов (метод принимает и то и другое), которые использовались в качестве параметров для imagePoints, imagePoints2 и objectPoints. Это кажется достаточно очевидным, но у меня было разочаровывающее время, когда я пытался сохранить эти параметры в файле XML и правильно их прочитать.
Я неуклюже обошел эту проблему, соединив код моей карты стереокалибровки, стереорефекта и несоответствия с калибровкой, и сохранил эти векторы как глобальные переменные. Это не лучший способ справиться с этой проблемой, так как мой код обременителен и здоровен, но я решил, что какой-то ответ лучше, чем отсутствие ответа.
Спасибо,
рябина