当使用SGBM来获得视差图时,如果增加参数numisparities,pic的左边部分会变大。有什么问题吗?在
相关代码:
num = cv2.getTrackbarPos("num", "depth")
blockSize = cv2.getTrackbarPos("blockSize", "depth")
window_size = cv2.getTrackbarPos("windowSize","depth")
if blockSize % 2 == 0:
blockSize += 1
if blockSize < 5:
blockSize = 5
min_disp = 0
num_disp = 16 * num - min_disp
stereo = cv2.StereoSGBM_create(minDisparity=min_disp,
numDisparities=num_disp,
blockSize=blockSize,
P1=8 * 3 * window_size ** 2,
P2=32 * 3 * window_size ** 2,
disp12MaxDiff=1,
uniquenessRatio=10,
speckleWindowSize=100,
speckleRange=32
)
disparity = stereo.compute(imgL, imgR).astype(np.float32) / 16.0
disp = cv2.normalize(disparity, disparity, alpha=0, beta=255,
norm_type=cv2.NORM_MINMAX, dtype=cv2.CV_8U)
谢谢!!在
这是因为搜索范围。立体匹配是利用视差数来完成的。换言之,左图像中的像素A仅通过numdisparity参数在右图像中搜索。从左向右搜索时,左部分被丢弃。在
为了填充这个区域,他们通常同时进行左视差到右视差和右视差到左视差,并进行LR一致性检查。在
相关问题 更多 >
编程相关推荐