讲解adaptiveThreshold
时间: 2023-11-17 13:05:04 浏览: 31
adaptiveThreshold是OpenCV中用来进行自适应阈值处理的函数。它可以根据图像的局部区域来确定每个像素的阈值,从而更好地进行图像分割等处理。
函数原型如下:
```python
cv2.adaptiveThreshold(src, maxValue, adaptiveMethod, thresholdType, blockSize, C[, dst]) → dst
```
参数解释:
- src:输入图像,必须是单通道灰度图像。
- maxValue:二值化后的最大值。
- adaptiveMethod:自适应阈值算法。可选值为`cv2.ADAPTIVE_THRESH_MEAN_C`和`cv2.ADAPTIVE_THRESH_GAUSSIAN_C`。
- thresholdType:阈值类型。可选值为`cv2.THRESH_BINARY`和`cv2.THRESH_BINARY_INV`。
- blockSize:局部区域大小,必须为奇数。
- C:从均值或加权均值中减去的常数,用于调整阈值。
- dst:输出图像,与输入图像尺寸和类型相同。如果未指定,则函数会创建一个新的图像。
算法解释:
- `cv2.ADAPTIVE_THRESH_MEAN_C`:该算法会计算每个像素周围`blockSize*blockSize`个像素的均值,并将其作为该像素的阈值。
- `cv2.ADAPTIVE_THRESH_GAUSSIAN_C`:该算法与上述算法类似,但是不是简单的均值,而是加权均值。权值通过一个高斯窗口计算得到,离中心点越远的像素权值越小。
示例代码:
```python
import cv2
img = cv2.imread('image.jpg', 0)
th1 = cv2.adaptiveThreshold(img, 255, cv2.ADAPTIVE_THRESH_MEAN_C, cv2.THRESH_BINARY, 11, 2)
th2 = cv2.adaptiveThreshold(img, 255, cv2.ADAPTIVE_THRESH_GAUSSIAN_C, cv2.THRESH_BINARY, 11, 2)
cv2.imshow('Original Image', img)
cv2.imshow('Adaptive Mean Threshold', th1)
cv2.imshow('Adaptive Gaussian Threshold', th2)
cv2.waitKey(0)
cv2.destroyAllWindows()
```
在这个例子中,我们首先读入了一张灰度图像。然后使用`cv2.adaptiveThreshold`函数分别进行了两种自适应阈值处理,最后将三张图像显示出来。可以看到,两种算法的效果略有差异。