Python生成二值化算法
时间: 2023-11-03 17:07:42 浏览: 92
Python中有多种实现二值化的算法,这里介绍其中两种常见的方法:全局阈值二值化和自适应阈值二值化。
1. 全局阈值二值化
全局阈值二值化是将图像中所有的像素点根据一个固定的阈值进行二值化的方法。其实现步骤如下:
```python
import cv2
# 读取灰度图像
img = cv2.imread('lena.png', 0)
# 设定阈值
threshold = 127
# 将像素点根据阈值进行二值化处理
ret, binary = cv2.threshold(img, threshold, 255, cv2.THRESH_BINARY)
# 显示二值化后的图像
cv2.imshow('binary', binary)
cv2.waitKey(0)
cv2.destroyAllWindows()
```
其中`cv2.threshold`函数的参数说明如下:
- `src`:输入图像,必须为灰度图像;
- `thresh`:设定的阈值,一般为0~255之间的整数;
- `maxval`:二值化后像素点的最大值,一般为255;
- `type`:二值化的算法类型,常见的有`cv2.THRESH_BINARY`和`cv2.THRESH_BINARY_INV`。
2. 自适应阈值二值化
自适应阈值二值化是将图像中的每个像素根据其周围像素的灰度值动态调整阈值进行二值化的方法。其实现步骤如下:
```python
import cv2
# 读取灰度图像
img = cv2.imread('lena.png', 0)
# 自适应阈值二值化处理
binary = cv2.adaptiveThreshold(img, 255, cv2.ADAPTIVE_THRESH_MEAN_C, cv2.THRESH_BINARY, 11, 2)
# 显示二值化后的图像
cv2.imshow('binary', binary)
cv2.waitKey(0)
cv2.destroyAllWindows()
```
其中`cv2.adaptiveThreshold`函数的参数说明如下:
- `src`:输入图像,必须为灰度图像;
- `maxval`:二值化后像素点的最大值,一般为255;
- `adaptiveMethod`:自适应阈值算法类型,常见的有`cv2.ADAPTIVE_THRESH_MEAN_C`和`cv2.ADAPTIVE_THRESH_GAUSSIAN_C`;
- `thresholdType`:二值化的算法类型,常见的有`cv2.THRESH_BINARY`和`cv2.THRESH_BINARY_INV`;
- `blockSize`:设定的区域大小,一般为奇数;
- `C`:从平均值或加权平均值中减去的常数。
阅读全文