У меня есть два стереоизображения, которые я хотел бы использовать для вычисления карты глубины. Хотя я, к сожалению, не знаю C/C++, я знаю python - поэтому, когда я нашел this tutorial, я был оптимистом.Python/OpenCV: вычисление карты глубины из стереоизображений
К сожалению, учебное пособие выглядит несколько устаревшим. Он не только нуждается в настройке для запуска вообще (переименование «createStereoBM» на «StereoBM»), но когда он запускается, он не дает хорошего результата даже на примере стереоизображений, которые были использованы в самом учебнике ,
Вот пример:
import numpy as np
import cv2
from matplotlib import pyplot as plt
imgL = cv2.imread('Yeuna9x.png',0)
imgR = cv2.imread('SuXT483.png',0)
stereo = cv2.StereoBM(1, 16, 15)
disparity = stereo.compute(imgL, imgR)
plt.imshow(disparity,'gray')
plt.show()
Результат:
Это выглядит очень отличается от того, что автор учебника достигает:
good result http://docs.opencv.org/trunk/_images/disparity_map.jpg
Тонкая настройка параметров не улучшает ситуацию. Вся документация, которую я смог найти, - это исходная C-версия кода openCV, а не эквивалент python-library. Я, к сожалению, не смог использовать это, чтобы улучшить ситуацию.
Любая помощь будет оценена!
только для записи, учебник из будущего (opencv3.0), но да, это устаревшее. для текущего 3.0 вам нужно будет использовать cv2.StereoBM_create() или cv2.StereoSGBM_create(). – berak
cv2.StereoBM, похоже, существует, но с использованием cv2.StereoBM_create() или cv2.StereoSGBM_create() выдает ошибку (ошибка атрибута). – jwdink
, вы, очевидно, используете opencv2.4, а не 3.0 – berak