簡體   English   中英

深度圖顯示所有灰色! OpenCV-Python

[英]Depth map shows everything grey! OpenCV- Python

我的代碼:

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。

標准化后,您也可以使用cv2.imshow()顯示結果disparity

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)

在此處輸入圖片說明

標准化圖像后,請注意數據類型的變化。 在標准化之前, disparityint16類型。 標准化后為float32 (在函數cv2.normalize()提及)

代替使用imshow而是根據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()

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM