当前位置: 代码网 > it编程>前端脚本>Python > Python对图片进行二值化的实现方法

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

2025年10月16日 Python 我要评论
在python中实现图像二值化主要依赖图像处理库(如opencv或pil)。以下是两种主流方法的详细实现:方法1:使用opencv(推荐高性能场景)import cv2# 读取图像(支持路径或直接读取

在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')

关键参数说明

阈值选择

  • 全局阈值:128(中值)适用于对比度均匀的图像
  • 自适应阈值:通过adaptivethreshold自动计算局部阈值
  • otsu方法:cv2.thresh_otsu标志可自动计算最优阈值

注意事项

  • 安装依赖:pip install opencv-python pillow
  • 输入路径:确保图像文件存在或使用绝对路径
  • 颜色空间:处理前统一转为灰度图(cv2.color_bgr2gray
  • 内存管理:大图像建议分块处理

扩展优化

  • 大津法(otsu):在cv2.threshold中添加cv2.thresh_otsu标志
  • 颜色二值化:对彩色 图像各通道分别处理后合并
  • 形态学操作:二值化后配合cv2.morphologyex优化边缘

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

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

(0)

相关文章:

版权声明:本文内容由互联网用户贡献,该文观点仅代表作者本人。本站仅提供信息存储服务,不拥有所有权,不承担相关法律责任。 如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 2386932994@qq.com 举报,一经查实将立刻删除。

发表评论

验证码:
Copyright © 2017-2025  代码网 保留所有权利. 粤ICP备2024248653号
站长QQ:2386932994 | 联系邮箱:2386932994@qq.com