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

Written by

in

文章目录
  • 在日常的图像处理工作中,我们经常会遇到需要去除图片黑色边框的需求。这些黑色边框可能来自扫描设备、截图工具或其他图像生成过程。手动处理大量图片既耗时又枯燥,今天我们就来实现一个自动化的 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通过rembg实现图片背景去除功能 1行Python代码实现去除图片水印详解 Python去除图片水印实现方法详解 运用python去除图片水印 python 基于opencv去除图片阴影 使用python去除图片白色像素的实例 python 使用plt画图,去除图片四周的白边方法 Python实现去除图片中指定颜色的像素功能示例
  • 目录
    • 前言
    • 实现思路
    • 代码实现
    • 代码解析
    • 使用方法
    • 应用场景
    • 总结

    在日常的图像处理工作中,我们经常会遇到需要去除图片黑色边框的需求。这些黑色边框可能来自扫描设备、截图工具或其他图像生成过程。手动处理大量图片既耗时又枯燥,今天我们就来实现一个自动化的 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通过rembg实现图片背景去除功能
    • 1行Python代码实现去除图片水印详解
    • Python去除图片水印实现方法详解
    • 运用python去除图片水印
    • python 基于opencv去除图片阴影
    • 使用python去除图片白色像素的实例
    • python 使用plt画图,去除图片四周的白边方法
    • Python实现去除图片中指定颜色的像素功能示例

    站内搜索