Python是一种高级编程语言,广泛用于计算机科学领域中的各种应用程序开发。其中之一就是图像处理,视差图计算便是其中的一项。
import numpy as np
import cv2
# 读入图像并转为灰度图
imgL = cv2.imread('left.png', 0)
imgR = cv2.imread('right.png', 0)
# 视差计算参数设置
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)
以上代码中,首先读入左右两个目标图像并将其转为灰度图。然后通过设定视差计算的参数进行视差计算,这里使用的是SGBM方法。最后显示视差图并保存。
运行代码后,得到的视差图能够反映图像中物体的深度信息,提供更丰富的场景信息,对于计算机视觉领域的研究具有重要的价值和应用。