Да, эпиполярные линии должны быть параллельными, чтобы createStereoBM
работал.
Для этого вам нужно оценить внешнюю калибровку между двумя вашими камерами (вращение и перемещение). Он работает в основном так же, как калибровка моно камеры. Есть несколько уроков по стерео калибровке, но я пока не нашел хорошего Python. Взгляните на инструмент для калибровки камеры ROS .
Далее вам необходимо исправить изображения с вашей камеры. Это означает, что вы используете отображение, полученное при калибровке стерео, и деформируете изображения таким образом, чтобы эпиполярные линии были параллельными. Взгляните на документацию stereoRectify
от OpenCV: здесь .
Когда вы позвонили initUndistortRectifyMap
с параметрами калибровки, как указано в документации, которую я связал, ваши изображения будут деформированы такчто эпиполярные линии параллельны, теперь вы можете использовать createStereoBM
для создания карты диспаратности.