python 中 cv2.StereoBM_create(1,2) 参数的含义

本文介绍了Python OpenCV库中用于创建立体图像深度映射的StereoBM_create函数,重点解析了numDisparities和blockSize两个关键参数。numDisparities代表最大和最小视差值的差,需为16的整数倍;blockSize则是匹配块的大小,应为大于1的奇数,通常建议在3到11之间,但可以设置为更大的奇数值。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

python opencv 官方教程中 45章立体图像中的深度地图提到了构建深度图的函数 StereoBM_create。代码如下:

import numpy as np
import cv2
from matplotlib import pyplot as plt
imgL = cv2.imread('tsukuba_l.png',0)
imgR = cv2.imread('tsukuba_r.png',0)
stereo = cv2.createStereoBM(numDisparities=16, blockSize=15)
disparity = stereo.compute(imgL,imgR)
plt.imshow(disparity,'gray')
plt.show()

这里会报错,把 cv2.createStereoBM 修改为 cv2.StereoBM_create,正确代码如下:


import cv2
from matplotlib import pyplot as plt
imgL = cv2.imread('23.jpg',0)
imgR = cv2.imread('24.jpg',0)
stereo = cv2.StereoBM_create(numDisparities=16, blockSize=11)
disparity = stereo.compute(imgL,imgR)
plt.imshow(disparity,'gray')
plt.show()

stereo = cv2.StereoBM_create(numDisparities=

### StereoBM 和 StereoSGBM 在 Python 中的使用方法及其差异 #### StereoBM 使用说明 StereoBM (Block Matching) 是一种用于计算立体图像视差图的方法。该算法通过比较左图和右图之间的像素块来估计视差。 ```python import numpy as np import cv2 stereo_bm = cv2.StereoBM_create(numDisparities=16, blockSize=15) # 假设 imgL 和 imgR 已经读取并预处理过 disparity_bm = stereo_bm.compute(imgL, imgR) ``` 此实现简单快速,但在复杂场景下的准确性可能不如其他更高级的技术[^1]。 #### StereoSGBM 使用说明 StereoSGBM (Semi-Global Block Matching) 提供了一种改进版本,在保持合理速度的同时提高了精度。它不仅考虑局部窗口内的匹配成本最小化,还引入全局优化机制以减少错误匹配的可能性。 ```python stereo_sgbm = cv2.StereoSGBM_create( minDisparity=0, numDisparities=16, blockSize=15, P1=8 * 3 * blockSize ** 2, P2=32 * 3 * blockSize ** 2, disp12MaxDiff=1, uniquenessRatio=10, speckleWindowSize=100, speckleRange=32 ) # 计算视差图 disparity_sgbm = stereo_sgbm.compute(imgL, imgR).astype(np.float32) / 16.0 ``` 参数设置更加灵活多样,允许用户根据具体应用场景调整性能与质量间的平衡。 #### 主要区别总结 - **计算效率**: StereoBM 实现较为基础,因此运行速度快;而 StereoSGBM 虽然增加了额外的计算开销,但由于采用了半全局优化策略,所以在大多数情况下能提供更好的结果。 - **鲁棒性和精确度**: 对于纹理较少或存在遮挡的情况,StereoSGBM 显示出更高的稳定性和可靠性。 - **配置选项**: StereoSGBM 支持更多可调参数,使得开发者能够针对特定需求微调模型表现。
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值