深度图显示一切灰色! OpenCV- Python

时间:2018-06-06 14:44:41

标签: python opencv

我的代码:

import cv2
import numpy as np

imgL = cv2.imread('Blender_Suzanne1.jpg')
img1 = cv2.cvtColor(imgL, cv2.COLOR_BGR2GRAY)
imgR = cv2.imread('Blender_Suzanne2.jpg')
img2 = cv2.cvtColor(imgR, cv2.COLOR_BGR2GRAY)

stereo = cv2.StereoBM_create(numDisparities = 16, blockSize = 17)
disparity = stereo.compute(img2, img1)

cv2.imshow('DepthMap', disparity)
cv2.waitKey()
cv2.destroyAllWindows()

当我运行它时,我看到一个全是灰色的窗口?我认为这是错误的。 我在OpenCV docs网站上使用了这段代码。 有人可以帮忙吗?

PS:首先我遇到了一些不允许输出窗口弹出的错误。所以,我在我的代码中添加了两行,即img1和img 2.

2 个答案:

答案 0 :(得分:2)

在对其进行标准化后,您也可以使用disparity显示结果cv2.imshow()

norm_image = cv2.normalize(disparity, None, alpha = 0, beta = 1, norm_type=cv2.NORM_MINMAX, dtype=cv2.CV_32F)

cv2.imshow('norm_image', norm_image)

enter image description here

注意标准化图像后数据类型的更改。在规范化之前,disparity的类型为int16。标准化后,它是float32(在函数cv2.normalize()中提到)

答案 1 :(得分:0)

而不是使用imshow根据文档使用matplotlib进行可视化。您也可以在读取图像的同一行中将图像转换为灰色。

import cv2
from matplotlib import pyplot as plt

imgL = cv2.imread('Blender_Suzanne1.jpg',0)
imgR = cv2.imread('Blender_Suzanne2.jpg',0)

stereo = cv2.StereoBM_create(numDisparities = 16, blockSize = 17)
disparity = stereo.compute(imgL, imgR)

plt.imshow(disparity,'gray')
plt.show()