Mam dwa obrazy stereo, które chciałbym wykorzystać do obliczenia mapy głębokości. Chociaż niestety nie znam C/C++, znam Pythona - więc gdy znalazłem this tutorial, byłem optymistą.Python/OpenCV: Obliczanie mapy głębi z obrazów stereo
Niestety, samouczek wydaje się być nieco przestarzały. Nie tylko musi zostać zmodyfikowany, aby w ogóle działał (zmieniając nazwę "createStereoBM" na "StereoBM"), ale po uruchomieniu nie daje dobrego wyniku, nawet na przykładowych obrazach stereo, które zostały użyte w samouczku .
Oto przykład:
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()
Rezultat:
To wygląda bardzo różni się od tego, co autor poradnika osiąga:
good result http://docs.opencv.org/trunk/_images/disparity_map.jpg
Poprawianie parametrów nie poprawia spraw. Cała dokumentacja, którą udało mi się znaleźć, dotyczy oryginalnej wersji C kodu openCV, a nie ekwiwalentu python-library. Niestety nie mogłem tego użyć, aby poprawić sytuację.
Każda pomoc zostanie doceniona!
tylko dla przypomnienia, poradnik jest z przyszłości (opencv3.0), ale tak, to jest nieaktualne. dla obecnego 3.0, będziesz musiał użyć cv2.StereoBM_create() lub cv2.StereoSGBM_create(). – berak
cv2.StereoBM wydaje się istnieć, ale użycie cv2.StereoBM_create() lub cv2.StereoSGBM_create() daje błąd (błąd atrybutu). – jwdink
znowu, oczywiście używasz opencv2.4, a nie 3.0 – berak