本文整理汇总了Python中cv2.StereoSGBM_create方法的典型用法代码示例。如果您正苦于以下问题:Python cv2.StereoSGBM_create方法的具体用法?Python cv2.StereoSGBM_create怎么用?Python cv2.StereoSGBM_create使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类cv2
的用法示例。
在下文中一共展示了cv2.StereoSGBM_create方法的7个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Python代码示例。
示例1: compute_disparity_pyramid
# 需要导入模块: import cv2 [as 别名]
# 或者: from cv2 import StereoSGBM_create [as 别名]
def compute_disparity_pyramid(self):
self.disparity = []
stereo = cv2.StereoBM_create()
# stereo = cv2.StereoSGBM_create(minDisparity=0,
# numDisparities=64,
# blockSize=11)
# Compute disparity at full resolution and downsample
disp = stereo.compute(self.im_left, self.im_right).astype(float) / 16.
for pyrlevel in range(self.pyrlevels):
if pyrlevel == 0:
self.disparity = [disp]
else:
pyr_factor = 2**-pyrlevel
# disp = cv2.pyrDown(disp) # Applies a large Gaussian blur
# kernel!
disp = disp[0::2, 0::2]
self.disparity.append(disp * pyr_factor)
示例2: compute_depth_pyramid
# 需要导入模块: import cv2 [as 别名]
# 或者: from cv2 import StereoSGBM_create [as 别名]
def compute_depth_pyramid(self):
self.depth = []
stereo = cv2.StereoBM_create()
# stereo = cv2.StereoSGBM_create(minDisparity=0,
# numDisparities=64,
# blockSize=11)
# Compute disparity at full resolution and downsample
depth = self.data[1]
for pyrlevel in range(self.pyrlevels):
if pyrlevel == 0:
self.depth = [depth]
else:
pyr_factor = 2**-pyrlevel
depth = depth[0::2, 0::2]
self.depth.append(depth)
示例3: depth_map
# 需要导入模块: import cv2 [as 别名]
# 或者: from cv2 import StereoSGBM_create [as 别名]
def depth_map(imgL, imgR):
""" Depth map calculation. Works with SGBM and WLS. Need rectified images, returns depth map ( left to right disparity ) """
# SGBM Parameters -----------------
window_size = 3 # wsize default 3; 5; 7 for SGBM reduced size image; 15 for SGBM full size image (1300px and above); 5 Works nicely
left_matcher = cv2.StereoSGBM_create(
minDisparity=-1,
numDisparities=5*16, # max_disp has to be dividable by 16 f. E. HH 192, 256
blockSize=window_size,
P1=8 * 3 * window_size,
# wsize default 3; 5; 7 for SGBM reduced size image; 15 for SGBM full size image (1300px and above); 5 Works nicely
P2=32 * 3 * window_size,
disp12MaxDiff=12,
uniquenessRatio=10,
speckleWindowSize=50,
speckleRange=32,
preFilterCap=63,
mode=cv2.STEREO_SGBM_MODE_SGBM_3WAY
)
right_matcher = cv2.ximgproc.createRightMatcher(left_matcher)
# FILTER Parameters
lmbda = 80000
sigma = 1.3
visual_multiplier = 6
wls_filter = cv2.ximgproc.createDisparityWLSFilter(matcher_left=left_matcher)
wls_filter.setLambda(lmbda)
wls_filter.setSigmaColor(sigma)
displ = left_matcher.compute(imgL, imgR) # .astype(np.float32)/16
dispr = right_matcher.compute(imgR, imgL) # .astype(np.float32)/16
displ = np.int16(displ)
dispr = np.int16(dispr)
filteredImg = wls_filter.filter(displ, imgL, None, dispr) # important to put "imgL" here!!!
filteredImg = cv2.normalize(src=filteredImg, dst=filteredImg, beta=0, alpha=255, norm_type=cv2.NORM_MINMAX);
filteredImg = np.uint8(filteredImg)
return filteredImg
示例4: sgbm
# 需要导入模块: import cv2 [as 别名]
# 或者: from cv2 import StereoSGBM_create [as 别名]
def sgbm(rimg1, rimg2):
# run SGM stereo matching with weighted least squares filtering
print('Running SGBM stereo matcher...')
rimg1 = cv2.cvtColor(rimg1, cv2.COLOR_BGR2GRAY)
rimg2 = cv2.cvtColor(rimg2, cv2.COLOR_BGR2GRAY)
maxd = DMAX_SEARCH
print('MAXD = ', maxd)
window_size = 5
left_matcher = cv2.StereoSGBM_create(
minDisparity=-maxd,
numDisparities=maxd * 2,
blockSize=5,
P1=8 * 3 * window_size ** 2,
P2=32 * 3 * window_size ** 2,
disp12MaxDiff=1,
uniquenessRatio=15,
speckleWindowSize=0,
speckleRange=2,
preFilterCap=63,
mode=cv2.STEREO_SGBM_MODE_SGBM_3WAY
)
right_matcher = cv2.ximgproc.createRightMatcher(left_matcher)
lmbda = 8000
sigma = 1.5
wls_filter = cv2.ximgproc.createDisparityWLSFilter(matcher_left=left_matcher)
wls_filter.setLambda(lmbda)
wls_filter.setSigmaColor(sigma)
displ = left_matcher.compute(rimg1, rimg2)
dispr = right_matcher.compute(rimg2, rimg1)
displ = np.int16(displ)
dispr = np.int16(dispr)
disparity = wls_filter.filter(displ, rimg1, None, dispr) / 16.0
return disparity
# read IMD file with sensor azimuth and elevation values
示例5: sgbm
# 需要导入模块: import cv2 [as 别名]
# 或者: from cv2 import StereoSGBM_create [as 别名]
def sgbm(rimg1, rimg2):
rimg1 = cv2.cvtColor(rimg1, cv2.COLOR_RGB2GRAY)
rimg2 = cv2.cvtColor(rimg2, cv2.COLOR_RGB2GRAY)
maxd = DMAX_SEARCH
window_size = 5
left_matcher = cv2.StereoSGBM_create(
minDisparity=-maxd,
numDisparities=maxd * 2,
blockSize=5,
P1=8 * 3 * window_size ** 2,
P2=32 * 3 * window_size ** 2,
disp12MaxDiff=1,
uniquenessRatio=15,
speckleWindowSize=0,
speckleRange=2,
preFilterCap=63,
mode=cv2.STEREO_SGBM_MODE_SGBM_3WAY
)
right_matcher = cv2.ximgproc.createRightMatcher(left_matcher)
lmbda = 8000
sigma = 1.5
wls_filter = cv2.ximgproc.createDisparityWLSFilter(matcher_left=left_matcher)
wls_filter.setLambda(lmbda)
wls_filter.setSigmaColor(sigma)
displ = left_matcher.compute(rimg1, rimg2)
dispr = right_matcher.compute(rimg2, rimg1)
displ = np.int16(displ)
dispr = np.int16(dispr)
disparity = wls_filter.filter(displ, rimg1, None, dispr) / 16.0
return disparity
示例6: stereo_match
# 需要导入模块: import cv2 [as 别名]
# 或者: from cv2 import StereoSGBM_create [as 别名]
def stereo_match(imgL, imgR):
# disparity range is tuned for 'aloe' image pair
window_size = 15
min_disp = 16
num_disp = 96 - min_disp
stereo = cv2.StereoSGBM_create(minDisparity=min_disp,
numDisparities=num_disp,
blockSize=16,
P1=8 * 3 * window_size ** 2,
P2=32 * 3 * window_size ** 2,
disp12MaxDiff=1,
uniquenessRatio=10,
speckleWindowSize=150,
speckleRange=32
)
# print('computing disparity...')
disp = stereo.compute(imgL, imgR).astype(np.float32) / 16.0
# print('generating 3d point cloud...',)
h, w = imgL.shape[:2]
f = 0.8 * w # guess for focal length
Q = np.float32([[1, 0, 0, -0.5 * w],
[0, -1, 0, 0.5 * h], # turn points 180 deg around x-axis,
[0, 0, 0, -f], # so that y-axis looks up
[0, 0, 1, 0]])
points = cv2.reprojectImageTo3D(disp, Q)
colors = cv2.cvtColor(imgL, cv2.COLOR_BGR2RGB)
mask = disp > disp.min()
out_points = points[mask]
out_colors = colors[mask]
append_ply_array(out_points, out_colors)
disparity_scaled = (disp - min_disp) / num_disp
disparity_scaled += abs(np.amin(disparity_scaled))
disparity_scaled /= np.amax(disparity_scaled)
disparity_scaled[disparity_scaled < 0] = 0
return np.array(255 * disparity_scaled, np.uint8)
示例7: disparity2
# 需要导入模块: import cv2 [as 别名]
# 或者: from cv2 import StereoSGBM_create [as 别名]
def disparity2(self):
#matcher = cv2.StereoSGBM_create(minDisparity=0, numDisparities=384, blockSize=7, P1=1176, P2=4704,
# preFilterCap=16, uniquenessRatio=10)
# matcher = cv2.StereoSGBM_create(minDisparity=0, numDisparities=512, blockSize=7, P1=2352, P2=9408,
# preFilterCap=16)
matcher = cv2.StereoSGBM_create(minDisparity=0, numDisparities=384, blockSize=7, P1=2352, P2=18816, #4704
preFilterCap=16)
disparity = matcher.compute(self.images[0], self.images[1])
self.process_output(disparity)