Python是一種高級編程語言,廣泛用于計算機科學(xué)領(lǐng)域中的各種應(yīng)用程序開發(fā)。其中之一就是圖像處理,視差圖計算便是其中的一項。
import numpy as np
import cv2
# 讀入圖像并轉(zhuǎn)為灰度圖
imgL = cv2.imread('left.png', 0)
imgR = cv2.imread('right.png', 0)
# 視差計算參數(shù)設(shè)置
window_size = 3
min_disp = 1
num_disp = 16*2
# 視差計算
stereo = cv2.StereoSGBM_create(minDisparity=min_disp,
numDisparities=num_disp,
blockSize=window_size,
P1=8*3*window_size**2,
P2=32*3*window_size**2,)
disparity = stereo.compute(imgL, imgR).astype(np.float32)/16.0
# 視差圖顯示
cv2.imshow('disparity', (disparity-min_disp)/num_disp)
cv2.waitKey()
# 視差圖保存
cv2.imwrite('disparity.png', (disparity-min_disp)/num_disp*255)
以上代碼中,首先讀入左右兩個目標(biāo)圖像并將其轉(zhuǎn)為灰度圖。然后通過設(shè)定視差計算的參數(shù)進行視差計算,這里使用的是SGBM方法。最后顯示視差圖并保存。
運行代碼后,得到的視差圖能夠反映圖像中物體的深度信息,提供更豐富的場景信息,對于計算機視覺領(lǐng)域的研究具有重要的價值和應(yīng)用。