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

 更新时间:2025年10月16日 08:35:53   作者: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')

关键参数说明

阈值选择

  • 全局阈值: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图片二值化内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • opencv python统计及绘制直方图的方法

    opencv python统计及绘制直方图的方法

    这篇文章主要介绍了opencv python统计及绘制直方图的方法,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2019-01-01
  • 教你使用Python获取QQ音乐某个歌手的歌单

    教你使用Python获取QQ音乐某个歌手的歌单

    这篇文章主要介绍了Python获取QQ音乐某个歌手的歌单,从qq音乐中获取某个你喜欢的歌手的清单,涉及到的库有requests、json,本文结合示例代码给大家介绍的非常详细,需要的朋友可以参考下
    2022-04-04
  • Python的设计模式编程入门指南

    Python的设计模式编程入门指南

    这篇文章主要介绍了Python的设计模式编程入门指南,设计模式主要指面对某些问题时需要用到的编程思想,需要的朋友可以参考下
    2015-04-04
  • Python实现PPT/PPTX批量转换成PDF

    Python实现PPT/PPTX批量转换成PDF

    这篇文章主要为大家详细介绍了如何使用Python将PowerPoint演示文稿(PPT、PPTX等)转换为PDF文件,使演示内容能够在更多的设备上展示,感兴趣的小伙伴可以了解下
    2024-01-01
  • wxpython布局的实现方法

    wxpython布局的实现方法

    这篇文章主要介绍了wxpython布局的实现方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-11-11
  • Python实现多个Word文档合并

    Python实现多个Word文档合并

    在Python中,可以使用Python-docx库来操作Word文档,所以下面小编就为大家介绍一下如何利用Python-docx实现多个Word文档合并功能吧,需要的可以参考一下
    2023-06-06
  • Pycharm没有报错提示(误触ignore)的完美解决方案

    Pycharm没有报错提示(误触ignore)的完美解决方案

    这篇文章主要介绍了Pycharm没有报错提示(误触ignore)的解决方案,本文通过图文并茂的形式给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2022-12-12
  • Python过滤列表用法实例分析

    Python过滤列表用法实例分析

    这篇文章主要介绍了Python过滤列表用法,结合实例形式分析了过滤列表的具体定义,功能与使用技巧,需要的朋友可以参考下
    2016-04-04
  • python利用logging模块实现根据日志级别打印不同颜色日志的代码案例

    python利用logging模块实现根据日志级别打印不同颜色日志的代码案例

    这篇文章主要介绍了python利用logging模块实现根据日志级别打印不同颜色日志,本文通过实例代码给大家详细讲解,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2022-12-12
  • Python XlsxWriter模块Chart类用法实例分析

    Python XlsxWriter模块Chart类用法实例分析

    这篇文章主要介绍了Python XlsxWriter模块Chart类用法,结合实例形式分析了Python XlsxWriter模块Chart类功能、图表绘制常用方法及相关操作注意事项,需要的朋友可以参考下
    2019-03-03

最新评论