2016-09-20 9 views
0

Я работаю над оценкой расстояния от стереокамер. Я использую версии python 2.7.11 и OpenCV 3.1. Я откалибровал каждую камеру отдельно и нашел внутренние параметры. проблема в том, что когда я использую функцию cv2.stereocalibtare(), как указано в документах OpenCV, я получаю ошибку: «TypeError: cameraMatrix1 не является числовым кортежем».cv2.stereocalibrate() error about "cameraMatrix" не является числовым кортежем

код выглядит следующим образом:

stereo_criteria = (cv2.TERM_CRITERIA_MAX_ITER + cv2.TERM_CRITERIA_EPS, 100, 1e-5) 
ret_stereo, R, T, E, F = cv2.stereoCalibrate(objpointsL, imgpointsL, imgpointsR, grayL.shape[::-1],mtxL, distcoeffL, mtxR, distcoeffR, criteria=stereo_criteria, flags=cv2.CALIB_FIX_INTRINSIC) 

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

код выглядел следующим образом:

stereo_criteria = (cv2.TERM_CRITERIA_MAX_ITER + cv2.TERM_CRITERIA_EPS, 100, 1e-5) 
stereocalib_retval, cameraMatrix1, distCoeffs1, cameraMatrix2, distCoeffs2, R, T, E, F = cv2.stereoCalibrate(objpointsL,imgpointsL,imgpointsR,grayL.shape, criteria=stereo_criteria) 

но получает ошибку говоря: «TypeError: Обязательный аргумент„distCoeffs1“(поз 5) не найден» Я просто не могу понять, почему эта функция не работает. Все, что я хочу, чтобы вычислить R, T, E, F значения

UPDATE: Для последней ошибки я попытался это:

stereocalib_retval, cameraMatrix1, distCoeffs1, cameraMatrix2, distCoeffs2, R, T, E, F = cv2.stereoCalibrate(objpointsL, 
                             imgpointsL, 
                             imgpointsR, 
                             mtxL, 
                             distcoeffL, 
                             mtxR, 
                             distcoeffR, 
                             image_size, 
                             criteria=stereocalib_criteria, 
                             flags=stereocalib_flags) 

и она работала. хотя для размещения камерыMatrix1, distCoeffs1, cameraMatrix2, distCoeffs2 не нужны (и на самом деле они равны mtxL, discoeffL, mtxR, discoeffR соответственно), опуская их, вызывало ошибку для меня. Первая проблема остается.

Я ценю вашу помощь

Масуд Saber

ответ

0

Это вопрос версии, я думаю. У меня такая же проблема, когда я использую Opencv 3.3.1, но он решил, когда я изменил 2.4.13.