python代码将灰度图像转换为二值图像
时间: 2024-09-25 21:11:18 浏览: 59
在Python中,我们可以使用PIL(Python Imaging Library)或者OpenCV库来处理图像并将其从灰度转换为二值。这里是一个简单的例子,使用PIL:
```python
from PIL import Image, ImageOps
# 加载灰度图像
image_gray = Image.open('gray_image.png').convert('L')
# 定义阈值,可以根据实际需要调整
threshold = 128
# 应用阈值,大于等于阈值的像素设置为白色(255),小于阈值的像素设置为黑色(0)
binary_image = image_gray.point(lambda x: 255 if x > threshold else 0)
# 保存二值图像
binary_image.save('binary_image.png')
```
在这个代码中,`point()`函数接受一个函数作为参数,这个函数会对每个像素的灰度值应用,如果灰度值大于给定的阈值,就设置为白色,反之则为黑色。
如果你使用OpenCV,可以这样做:
```python
import cv2
# 读取灰度图像
img_gray = cv2.imread('gray_image.jpg', cv2.IMREAD_GRAYSCALE)
# 设定阈值,这里使用Otsu's阈值自动计算
_, binary_img = cv2.threshold(img_gray, 0, 255, cv2.THRESH_BINARY_INV + cv2.THRESH_OTSU)
# 保存二值图像
cv2.imwrite('binary_image.jpg', binary_img)
```
这里使用了`cv2.threshold()`函数,它会返回二进制图像和一个掩码。`cv2.THRESH_BINARY_INV`表示图像中的高值区域变为黑色,低值区域变为白色,而`cv2.THRESH_OTSU`用于自动确定最佳阈值。
阅读全文