不使用cv2的自适应阈值python代码
时间: 2023-12-12 19:05:14 浏览: 44
以下是不使用cv2的自适应阈值的Python代码示例:
```python
import numpy as np
from PIL import Image
# 读取图像
img = Image.open('image.jpg')
img = img.convert('L') # 转为灰度图像
# 定义块大小和常数
block_size = 5
const = 10
# 获取图像大小和块数量
width, height = img.size
block_count_x = int(np.ceil(width / block_size))
block_count_y = int(np.ceil(height / block_size))
# 对每个块进行阈值处理
for i in range(block_count_x):
for j in range(block_count_y):
# 计算当前块的左上角和右下角坐标
x1, y1 = i*block_size, j*block_size
x2, y2 = min((i+1)*block_size, width), min((j+1)*block_size, height)
# 获取当前块的像素值
block = np.array(img.crop((x1, y1, x2, y2)))
# 计算当前块的阈值
threshold = np.mean(block) - const
# 对当前块进行二值化处理
img.paste(Image.fromarray((block > threshold).astype(np.uint8)*255), (x1, y1, x2, y2))
# 显示处理后的图像
img.show()
```
该代码使用Pillow库代替了OpenCV,对于每个块,计算了块内像素的平均值减去一个常数作为阈值,并将块内像素二值化处理后拼接回原图像。
相关推荐
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)