Постоянная ошибка, когда метод стереоCalibrate () в opencv 3.0

Я постараюсь сделать этот вопрос как можно более конкретным.

При вызове 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))

Спасибо за любую помощь,
рябина

1

Решение

Ошибка подтверждения ошибки nimages = ….. была просто проблемой с размерами матриц или векторов (метод принимает и то и другое), которые использовались в качестве параметров для imagePoints, imagePoints2 и objectPoints. Это кажется достаточно очевидным, но у меня было разочаровывающее время, когда я пытался сохранить эти параметры в файле XML и правильно их прочитать.

Я неуклюже обошел эту проблему, соединив код моей карты стереокалибровки, стереорефекта и несоответствия с калибровкой, и сохранил эти векторы как глобальные переменные. Это не лучший способ справиться с этой проблемой, так как мой код обременителен и здоровен, но я решил, что какой-то ответ лучше, чем отсутствие ответа.

Спасибо,
рябина

0

Другие решения