Как построить карту глубины в opencv?

Пытаюсь построить карту глубины с помощью opencv-python. Использую такой код:

import cv2
import numpy as np

left_image = cv2.imread('im10.jpg', 0)
right_image = cv2.imread('im11.jpg', 0)
left_image2 = cv2.imread('im0.jpg', 0)
right_image2 = cv2.imread('im1.jpg', 0)

left_image = cv2.resize(left_image, (800, 600))
right_image = cv2.resize(right_image, (800, 600))
left_image2 = cv2.resize(left_image2, (800, 600))
right_image2 = cv2.resize(right_image2, (800, 600))

stereoBM = cv2.StereoBM_create(0, 7)
disparity_map = stereoBM.compute(left_image, right_image).astype(np.float32)
disparity_map2 = stereoBM.compute(left_image2, right_image2).astype(np.float32)
disparity_map = cv2.normalize(disparity_map, 0, 255, cv2.NORM_MINMAX)
disparity_map2 = cv2.normalize(disparity_map2, 0, 255, cv2.NORM_MINMAX)

cv2.imshow('disparity', disparity_map)
cv2.imshow('disparity2', disparity_map2)
cv2.waitKey()

disparity - карта глубины для идеальной картинки скачанной из интернета. то что получается с идеальной картинкой из интернета

disparity2 - карта глубины для фото с моих камер. то что получается с моими фото

Я использую 2 широкоугольные ик-камеры. Калибрую по этой статье: https://stereopi.com/blog/opencv-and-depth-map-stereopi-tutorial

Вопрос: что нужно для построения карты глубины? (цветная картинка или черно-белая? какое разрешение?). По каким причинам может неправильно строиться карта глубины для моих фото?


Ответы (0 шт):