Python实现批量设置图片背景为透明
作者:PythonFun
我们日常生活中制作PPT等教学资源时,需要批量去除图片背景,就可以使用 Python 的 rembg 库。
这个库基于神经网络模型,去背景效果较好,可以批量处理png, jpg, jpeg等图片。采用以下代码可以批量处理当前目录下的所有图片,去除背景后并保存为透明背景的图像存在output当中。
一、安装rembg库
不过,使用前需要在cmd下或者pycharm, thonny等pyhon的idle调试工具中安装一下这个rembg库,安装代码:
pip install rembg
二、下载u2net.onnx机器学习模型
安装完成rembg模块后,第一次运行程序,调用这个模块,还需要安装机器学习模型:u2net.onnx,大小为176M,程序会自动下载,全程不需要干涉。
下载机器学习模型
这个模型文件 (u2net.onnx) 是经过训练的深度学习模型,包含了用于识别并分离前景和背景的算法权重。rembg 库使用 U2-Net 来执行背景去除的任务。第一次使用 rembg 时,库会自动下载这个模型文件,以确保能够正确运行背景去除功能。
具体来说:模型文件 u2net.onnx:U2-Net 模型是一个开源的图像分割模型,专门用于前景-背景分离。rembg 使用这个模型的 .onnx 文件格式,方便兼容各种框架。
由于rembg 没有默认包含该模型文件,因此在第一次运行时需要下载并存储在本地(C:\Users\用户名\.u2net\u2net.onnx),下载完成后,模型文件会保存在你用户目录的 .u2net 文件夹中,后续运行 rembg 就不需要重新下载。
三、编写清除图片背景代码
下载完成后,程序会自动运行清除背景的程序,如下面的程序,批量把当前目录下的图片文件,移除背景,设置透明背景后存在output文件夹下面,全程操作非常的快。
import os from rembg import remove from PIL import Image # 定义输入和输出文件夹 input_folder = '.' # 当前目录 output_folder = './output/' # 输出文件夹 # 创建输出文件夹(如果不存在) # if not os.path.exists(output_folder): os.makedirs(output_folder,exist_ok=True) # 遍历当前目录的所有文件 for filename in os.listdir(input_folder): # 检查是否为图像文件(可以添加更多格式) if filename.lower().endswith(('.png', '.jpg', '.jpeg')): input_path = os.path.join(input_folder, filename) output_path = os.path.join(output_folder, filename.split('.')[0] + '_no_bg.png') # 打开图像并去除背景 with open(input_path, 'rb') as input_file: input_image = input_file.read() output_image = remove(input_image) # 将结果保存为 PNG 格式 with open(output_path, 'wb') as output_file: output_file.write(output_image) print("图片背景已去除并保存到 'output' 文件夹。")
input_folder 指定输入文件夹,这里设为当前目录 ./。
output_folder 是输出文件夹(去除背景后的图片保存位置),如果不存在,则会自动创建。
脚本遍历当前目录中的所有图像文件(.png, .jpg, .jpeg),去除背景后以透明背景 PNG 格式保存到 output 文件夹中。
四、效果对比
以下是清除背景前后的效果对比,怎么样,还算不错吧?
清除背景前:
清除背景后:
到此这篇关于Python实现批量设置图片背景为透明的文章就介绍到这了,更多相关Python图片背景透明内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!