python

关注公众号 jb51net

关闭
首页 > 脚本专栏 > python > Python图片二值化

Python对图片进行二值化的实现方法

作者:detayun

图像的二值化处理是将图像上的像素点的灰度值设置为0或255,也就是将整个图像呈现出明显的只有黑和白的视觉效果,二值化是图像分割的一种最简单的方法,可以把灰度图像转换成二值图像,本文给大家介绍了Python对图片进行二值化的实现方法,需要的朋友可以参考下

在Python中实现图像二值化主要依赖图像处理库(如OpenCV或PIL)。以下是两种主流方法的详细实现:

方法1:使用OpenCV(推荐高性能场景)

import cv2

# 读取图像(支持路径或直接读取)
image = cv2.imread('input.jpg', cv2.IMREAD_GRAYSCALE)  # 直接转为灰度图

# 全局阈值二值化(阈值设为128)
_, binary_image = cv2.threshold(image, 128, 255, cv2.THRESH_BINARY)

# 自适应阈值(适用于光照不均场景)
adaptive_binary = cv2.adaptiveThreshold(
    image, 
    255, 
    cv2.ADAPTIVE_THRESH_GAUSSIAN_C, 
    cv2.THRESH_BINARY, 
    11,  # 邻域尺寸(需奇数)
    2    # 常数偏移量
)

# 保存结果
cv2.imwrite('binary_global.jpg', binary_image)
cv2.imwrite('adaptive_binary.jpg', adaptive_binary)

方法2:使用PIL(轻量级方案)

from PIL import Image, ImageOps

# 打开图像并转为灰度
img = Image.open('input.jpg').convert('L')

# 手动二值化(阈值128)
binary_img = img.point(lambda p: 255 if p > 128 else 0)

# 使用内置二值化方法
binary_img_builtin = ImageOps.colorize(
    img, 
    black="black", 
    white="white", 
    threshold=0.5  # 0.0-1.0范围
)

# 保存结果
binary_img.save('pil_binary.jpg')
binary_img_builtin.save('pil_builtin_binary.jpg')

关键参数说明

阈值选择

注意事项

扩展优化

以上代码可直接复制运行,根据实际场景选择OpenCV(高性能)或PIL(轻量级)方案。处理前建议备份原始图像,处理后可通过matplotlib进行可视化验证。

到此这篇关于Python对图片进行二值化的实现方法的文章就介绍到这了,更多相关Python图片二值化内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

您可能感兴趣的文章:
阅读全文