Python实现批量设置图片背景为透明

 更新时间:2024年11月11日 09:06:48   作者:PythonFun  
我们日常生活中制作PPT等教学资源时,需要批量去除图片背景,就可以使用 Python 的 rembg 库,下面我们就来看看如何操作rembg实现批量设置图片背景为透明吧

我们日常生活中制作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图片背景透明内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • python本地文件服务器实例教程

    python本地文件服务器实例教程

    这篇文章主要给大家介绍了关于python本地文件服务器的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2021-05-05
  • 用Python将动态GIF图片倒放播放的方法

    用Python将动态GIF图片倒放播放的方法

    GIF(Graphics Interchange Format) 是一种可以用来呈现动画效果的图片格式,原理就是保存很多帧(Frame)静态图像,然后连续呈现。这篇文章主要介绍了用Python将动态GIF图片倒放播放的方法,需要的朋友可以参考下
    2016-11-11
  • Python创建7种不同的文件格式的方法总结

    Python创建7种不同的文件格式的方法总结

    今天的这篇文章呢,小编来介绍一下如何通过Python来创建各种形式的文件,这里包括了:文本文件、CSV文件、Excel文件、压缩文件、XML文件、JSON文件和PDF文件,需要的可以参考一下
    2023-01-01
  • Django def clean()函数对表单中的数据进行验证操作

    Django def clean()函数对表单中的数据进行验证操作

    这篇文章主要介绍了Django def clean()函数对表单中的数据进行验证操作,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-07-07
  • python 计算数据偏差和峰度的方法

    python 计算数据偏差和峰度的方法

    今天小编就为大家分享一篇python 计算数据偏差和峰度的方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2019-06-06
  • Python求1到n的阶乘之和的实例

    Python求1到n的阶乘之和的实例

    这篇文章主要介绍了Python求1到n的阶乘之和的实例,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2024-06-06
  • Python爬虫实现搭建代理ip池

    Python爬虫实现搭建代理ip池

    这篇文章主要介绍了Python爬虫实现搭建代理ip池,文章围绕主题展开详细的内容介绍,具有一定的参考价值,需要的小伙伴可以参考一下,希望对你的工作有所帮助
    2022-06-06
  • Pandas.DataFrame行和列的转置的实现

    Pandas.DataFrame行和列的转置的实现

    本文主要介绍了Pandas.DataFrame行和列的转置的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2023-02-02
  • python 实现将Numpy数组保存为图像

    python 实现将Numpy数组保存为图像

    今天小编就为大家分享一篇python 实现将Numpy数组保存为图像,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-01-01
  • eclipse创建python项目步骤详解

    eclipse创建python项目步骤详解

    在本篇内容里小编给大家分享了关于eclipse创建python项目的具体步骤和方法,需要的朋友们跟着学习下。
    2019-05-05

最新评论