2016-02-12 7 views
1

Я использую OpenCV3.1 с python 2.7 для калибровки и исправления настройки стереокамеры. Когда я пытаюсь применить выпрямления и undistortion матрицы к изображению с помощью cv2.remap(), я получаю следующее сообщение об ошибке:OpenCV 3.1 Функция Remap Тип Значение Значение

Traceback (most recent call last): 
File "C:\University\Year3\Third Year Project - Gaze Correction\EclipseWorkspace\PythonTest\videoCap.py", line 36, in <module> 
stereoCalib.rectify(frames) 
File "C:\University\Year3\Third Year Project - Gaze Correction\EclipseWorkspace\PythonTest\Calibrator.py", line 137, in rectify 
borderMode=cv2.BORDER_CONSTANT) 
TypeError: an integer is required 

Мой код заключается в следующем:

new_frames = [] 
new_img=[] 
for i, side in enumerate(("left", "right")): 
    new_img = cv2.remap(frames[i], 
         new_img, 
         self.undistortion_map[side], 
         self.rectification_map[side], 
         cv2.INTER_CUBIC, 
         borderMode=cv2.BORDER_CONSTANT) 
    new_frames.append(new_img) 

Я пробовал настройки INTER_CUBIC и BORDER_CONSTANT как int (1) и int (0) взаимозаменяемо. Я также добавил скаляр np.zeros (3) в конце, но ошибка осталась неизменной во всех моих попытках.

ответ

0

Использование, как описано в documentation, неверно. Оно должно быть:

new_img = cv2.remap(src, 
        map1, 
        map2, 
        interpolation=cv2.INTER_<VALUE>) 

режим Border совсем не обязательно, и поэтому borderValue.