SGBM算法求解视差图
目的
用SGBM算法计算下列两幅图的视差图。
代码
import numpy as np
import cv2
#SGBM函数参数
window_size = 5
min_disp = 16
num_disp = 192 - min_disp
blockSize = window_size
uniquenessRatio = 1
speckleRange = 3
speckleWindowSize = 3
disp12MaxDiff = 200
P1 = 600
P2 = 2400
#读取左图并转为单通道灰度图
imgL = cv2.imread('lzq1.jpg')
imgLG = cv2.cvtColor(imgL, cv2.COLOR_BGR2GRAY)
#读取右图并转为单通道灰度图
imgR = cv2.imread('lzq2.jpg')
imgRG = cv2.cvtColor(imgR, cv2.COLOR_BGR2GRAY)
#计算视差
stereo = cv2.StereoSGBM_create(minDisparity=min_disp, numDisparities=num_disp, blockSize=window_size,
uniquenessRatio=uniquenessRatio, speckleRange=speckleRange,
speckleWindowSize=speckleWindowSize, disp12MaxDiff=disp12MaxDiff, P1=P1, P2=P2)
disp = stereo.compute(imgLG, img