Ho due immagini stereo che mi piacerebbe usare per calcolare una mappa di profondità. Mentre sfortunatamente non conosco C/C++, conosco python-- quindi quando ho trovato this tutorial, ero ottimista.Python/OpenCV dell'attività: una mappa di profondità da immagini stereo
Purtroppo, il tutorial sembra essere un po 'fuori data. Non solo deve essere ottimizzato per funzionare (rinominare 'createStereoBM' in 'StereoBM') ma quando viene eseguito, non dà un buon risultato, anche sulle immagini stereo di esempio che sono state utilizzate nel tutorial stesso .
Ecco un esempio:
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()
Il risultato:
Questo sembra molto diverso da quello che l'autore del tutorial raggiunge:
good result http://docs.opencv.org/trunk/_images/disparity_map.jpg
Modificare i parametri non migliora le cose. Tutta la documentazione che sono stato in grado di trovare è per la versione C originale del codice openCV, non l'equivalente della libreria Python. Purtroppo non sono stato in grado di usarlo per migliorare le cose.
Qualsiasi aiuto sarebbe apprezzato!
solo per la cronaca, il tutorial è dal futuro (opencv3.0), ma sì, è obsoleto. per la versione 3.0, dovresti usare cv2.StereoBM_create() o cv2.StereoSGBM_create(). – berak
sembra esistere cv2.StereoBM, ma utilizzando cv2.StereoBM_create() o cv2.StereoSGBM_create() restituisce un errore (errore attributo). – jwdink
, ovviamente stai usando opencv2.4, non 3.0 – berak