python opencv depth

Python/OpenCV: cálculo de un mapa de profundidad a partir de imágenes estéreo



depth (3)

La cámara se traduce verticalmente en lugar de horizontalmente . Gire las imágenes 90 grados, luego intente. (Pruébalo girando la pantalla. Acabo de levantar mi computadora portátil y ponerla en su borde).

Usted menciona diferentes programas; quizás un tipo de cosa row-major / column-major entre el original y pyOpenCV.

Tengo dos imágenes estéreo que me gustaría usar para calcular un mapa de profundidad. Aunque desafortunadamente no conozco C / C ++, sí sé Python, así que cuando encontré este tutorial , me sentí optimista.

Desafortunadamente, el tutorial parece estar un poco desactualizado. No solo necesita modificarse para ejecutarse (cambiar el nombre de ''createStereoBM'' a ''StereoBM''), pero cuando se ejecuta, no da un buen resultado, incluso en las estereoimágenes de ejemplo que se usaron en el tutorial mismo. .

Aquí hay un ejemplo:

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()

El resultado:

Esto se ve muy diferente de lo que logra el autor del tutorial:

buen resultado http://docs.opencv.org/trunk/_images/disparity_map.jpg

Afinar los parámetros no mejora las cosas. Toda la documentación que he podido encontrar es para la versión C original del código openCV, no para python-library-equivalent. Desafortunadamente no he podido usar esto para mejorar las cosas.

¡Cualquier ayuda sería apreciada!



Tienes las imágenes al revés.

Mire las imágenes, la lata detrás de la lámpara le permite calcular la ubicación de las dos imágenes en la cámara,

Solo cambia esto:

# v imgR = cv2.imread(''Yeuna9x.png'',0) imgL = cv2.imread(''SuXT483.png'',0) # ^

Si miras la imagen en el tutorial que dicen que es el marco left , es igual a la right .

Aquí está mi resultado después del cambio.