Python实现PNG图片黑色边框自动去除工具

 更新时间:2025年06月26日 09:39:07   作者:XXYBMOOO  
在日常的图像处理工作中,我们经常会遇到需要去除图片黑色边框的需求,本文将使用Python实现一个自动化的 PNG 图片黑色边框去除工具,需要的可以了解下

前言

在日常的图像处理工作中,我们经常会遇到需要去除图片黑色边框的需求。这些黑色边框可能来自扫描设备、截图工具或其他图像生成过程。手动处理大量图片既耗时又枯燥,今天我们就来实现一个自动化的 PNG 图片黑色边框去除工具。

实现思路

我们可以使用 Python 的 OpenCV 库来实现这一功能。基本思路是通过图像阈值处理找到非黑色区域的边界,然后裁剪掉黑色边框部分。对于带有透明通道的 PNG 图片,我们还可以利用 alpha 通道信息更精确地定位主体内容。

代码实现

下面是完整的实现代码:

import os
import cv2
import numpy as np

def remove_black_borders(image):
    """
    改进版的去除黑色边框函数
    """
    # 检查是否有alpha通道
    if image.shape[2] == 4:
        # 使用alpha通道作为掩码
        gray = image[:,:,3]
        _, thresh = cv2.threshold(gray, 1, 255, cv2.THRESH_BINARY)
    else:
        # 没有alpha通道,使用常规方法
        gray = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)
        _, thresh = cv2.threshold(gray, 10, 255, cv2.THRESH_BINARY)  # 提高阈值
    
    # 找到所有非黑色像素的坐标
    coords = np.column_stack(np.where(thresh > 0))
    
    if len(coords) == 0:
        return image
    
    # 获取边界坐标
    y_min, y_max = coords[:, 0].min(), coords[:, 0].max()
    x_min, x_max = coords[:, 1].min(), coords[:, 1].max()
    
    # 裁剪图片
    cropped = image[y_min:y_max+1, x_min:x_max+1]
    
    return cropped

def process_png_files(input_folder, output_folder):
    """
    处理文件夹中的所有PNG文件
    """
    if not os.path.exists(output_folder):
        os.makedirs(output_folder)
    
    for filename in os.listdir(input_folder):
        if filename.lower().endswith('.png'):
            input_path = os.path.join(input_folder, filename)
            image = cv2.imread(input_path, cv2.IMREAD_UNCHANGED)  # 保留alpha通道
            
            if image is None:
                print(f"无法读取图片: {filename}")
                continue
            
            # 去除边框
            processed_image = remove_black_borders(image)
            
            # 保存图片
            output_path = os.path.join(output_folder, filename)
            cv2.imwrite(output_path, processed_image)
            print(f"已处理: {filename} (原始尺寸: {image.shape}, 处理后尺寸: {processed_image.shape})")


if __name__ == "__main__":
    # 输入文件夹路径(包含PNG图片的文件夹)
    input_folder = "C:\\Users\\zxc8756\\Desktop\\input_images"  # 修改为你的输入文件夹路径
    
    # 输出文件夹路径(处理后的图片将保存到这里)
    output_folder = "C:\\Users\\zxc8756\\Desktop\\output_images"  # 修改为你想要的输出文件夹路径
    
    # 处理图片
    process_png_files(input_folder, output_folder)
    
    print("所有图片处理完成!")

代码解析

1. 核心功能函数:remove_black_borders

这个函数负责检测并去除图片中的黑色边框:

  • 首先判断图片是否有 alpha 通道,如果有则使用 alpha 通道作为掩码
  • 对于没有 alpha 通道的图片,将其转换为灰度图并进行阈值处理
  • 通过找到非零像素的坐标来确定主体内容的边界
  • 最后根据边界坐标裁剪图片

2. 批量处理函数:process_png_files

这个函数用于批量处理指定文件夹中的所有 PNG 图片:

  • 创建输出文件夹(如果不存在)
  • 遍历输入文件夹中的所有 PNG 文件
  • 读取图片并调用 remove_black_borders 函数进行处理
  • 将处理后的图片保存到输出文件夹,并打印处理信息

使用方法

安装必要的库:

pip install opencv-python numpy

修改代码中的输入和输出文件夹路径:

# 输入文件夹路径(包含PNG图片的文件夹)
input_folder = "C:\\Users\\zxc8756\\Desktop\\input_images"  # 修改为你的输入文件夹路径

# 输出文件夹路径(处理后的图片将保存到这里)
output_folder = "C:\\Users\\zxc8756\\Desktop\\output_images"  # 修改为你想要的输出文件夹路径

运行脚本,等待处理完成。脚本会自动输出每张图片的处理前后尺寸信息。

应用场景

这个工具在以下场景中特别有用:

  • 处理扫描文档或图片,去除边缘的空白区域
  • 准备图标素材时,自动裁剪掉多余的空白
  • 处理批量导出的 UI 元素,确保主体内容居中且无冗余边界

总结

通过使用 Python 和 OpenCV,我们实现了一个高效的 PNG 图片黑色边框自动去除工具。这个工具不仅可以节省大量手动处理图片的时间,还能保证处理效果的一致性。你可以根据自己的需求进一步扩展这个工具,比如添加 GUI 界面、支持更多图片格式或调整裁剪算法参数等。

到此这篇关于Python实现PNG图片黑色边框自动去除工具的文章就介绍到这了,更多相关Python图片边框去除内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • 使用python生成大量数据写入es数据库并查询操作(2)

    使用python生成大量数据写入es数据库并查询操作(2)

    这篇文章主要介绍了使用python生成大量数据写入es数据库并查询操作,文章围绕主题展开详细的内容介绍,具有一定的参考价值,需要的小伙伴可以参考一下
    2022-09-09
  • python交互式图形编程实例(三)

    python交互式图形编程实例(三)

    这篇文章主要为大家详细介绍了python交互式图形编程实例第三篇,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-11-11
  • python 初始化一个定长的数组实例

    python 初始化一个定长的数组实例

    今天小编就为大家分享一篇python 初始化一个定长的数组实例,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2019-12-12
  • PyTorch模型转TensorRT是怎么实现的?

    PyTorch模型转TensorRT是怎么实现的?

    今天给大家带来的是关于Python的相关知识,文章围绕着PyTorch模型转TensorRT是怎么实现的展开,文中有非常详细的介绍及代码示例,需要的朋友可以参考下
    2021-06-06
  • python脚本框架webpy入门安装及应用创建

    python脚本框架webpy入门安装及应用创建

    这篇文章主要为大家介绍了python脚本框架web.py的入门安装及应用创建过程,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步
    2021-11-11
  • Python queue模块攻略全解

    Python queue模块攻略全解

    这篇文章主要为大家介绍了Python queue模块攻略全解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-12-12
  • Python绘图之桃花盛开

    Python绘图之桃花盛开

    这篇文章主要介绍了如何用python绘制桃花树,帮助大家更好的使用python处理图片,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2021-08-08
  • Python 使用openpyxl处理Excel文件详情

    Python 使用openpyxl处理Excel文件详情

    这篇文章主要介绍了Python 使用openpyxl处理Excel文件详情,文章围绕主题展开详细的内容介绍,具有一定的参考价值,需要的小伙伴可以参考一下
    2022-08-08
  • python实现udp聊天窗口

    python实现udp聊天窗口

    这篇文章主要为大家详细介绍了python实现udp聊天窗口,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2020-03-03
  • EM算法的python实现的方法步骤

    EM算法的python实现的方法步骤

    本篇文章主要介绍了EM算法的python实现的方法步骤,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2018-01-01

最新评论