cv2.threshold 自适应阈值
时间: 2025-01-03 10:37:15 浏览: 8
### 使用OpenCV实现自适应阈值处理
在计算机视觉应用中,图像二值化是一个重要的预处理步骤。对于光照不均匀或背景复杂的场景,全局固定阈值可能无法获得理想的分割效果。此时可以采用自适应阈值法[^1]。
#### 自适应阈值函数介绍
`cv2.adaptiveThreshold()` 函数用于执行自适应阈值处理。该函数会根据图像局部区域的特性自动调整阈值,从而更好地应对复杂环境下的目标检测需求。
此函数具有以下几个参数:
- `src`: 输入单通道数据类型的源图像。
- `maxValue`: 阈值操作后的最大赋值。
- `adaptiveMethod`: 选择自适应方法,可选均值(`ADAPTIVE_THRESH_MEAN_C`) 或高斯加权平均 (`ADAPTIVE_THRESH_GAUSSIAN_C`)。
- `thresholdType`: 设置阈值类型,通常为 `THRESH_BINARY` 或者 `THRESH_BINARY_INV`。
- `blockSize`: 计算阈值时使用的邻域大小(奇数),即多少个像素组成的窗口尺寸。
- `C`: 常量从计算得到的均值或权重均值减去作为最终阈值前的一个偏移项。
```python
import cv2
import numpy as np
# 加载灰度图
image = cv2.imread('example.jpg', cv2.IMREAD_GRAYSCALE)
# 应用自适应阈值 - 方法一:均值
mean_adaptive_threshold_image = cv2.adaptiveThreshold(image, 255,
cv2.ADAPTIVE_THRESH_MEAN_C,
cv2.THRESH_BINARY, 11, 2)
# 应用自适应阈值 - 方法二:高斯
gaussian_adaptive_threshold_image = cv2.adaptiveThreshold(image, 255,
cv2.ADAPTIVE_THRESH_GAUSSIAN_C,
cv2.THRESH_BINARY, 11, 2)
# 显示结果
cv2.imshow('Mean Adaptive Threshold', mean_adaptive_threshold_image)
cv2.imshow('Gaussian Adaptive Threshold', gaussian_adaptive_threshold_image)
cv2.waitKey(0)
cv2.destroyAllWindows()
```
上述代码展示了两种不同方式的应用实例——基于均值和平滑加权求和的方法来进行自适应阈值转换。
阅读全文