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

作者:

文章目录
  • 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)
  • 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图片二值化内容请搜索风君子博客以前的文章或继续浏览下面的相关文章希望大家以后多多支持风君子博客! 您可能感兴趣的文章: Python实现图片二值化的详细代码 python实现图片二值化及灰度处理方式 python验证码图片处理(二值化) python 图片二值化处理(处理后为纯黑白的图片) python图片二值化提高识别率代码实例
  • 目录
    • 方法1:使用OpenCV(推荐高性能场景)
    • 方法2:使用PIL(轻量级方案)
    • 关键参数说明
    • 扩展优化

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

    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)
    

    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图片二值化内容请搜索风君子博客以前的文章或继续浏览下面的相关文章希望大家以后多多支持风君子博客!

    您可能感兴趣的文章:

    • Python实现图片二值化的详细代码
    • python实现图片二值化及灰度处理方式
    • python验证码图片处理(二值化)
    • python 图片二值化处理(处理后为纯黑白的图片)
    • python图片二值化提高识别率代码实例

    站内搜索