Python實(shí)現(xiàn)批量設(shè)置圖片背景為透明
我們?nèi)粘I钪兄谱鱌PT等教學(xué)資源時(shí),需要批量去除圖片背景,就可以使用 Python 的 rembg 庫(kù)。
這個(gè)庫(kù)基于神經(jīng)網(wǎng)絡(luò)模型,去背景效果較好,可以批量處理png, jpg, jpeg等圖片。采用以下代碼可以批量處理當(dāng)前目錄下的所有圖片,去除背景后并保存為透明背景的圖像存在output當(dāng)中。
一、安裝rembg庫(kù)
不過,使用前需要在cmd下或者pycharm, thonny等pyhon的idle調(diào)試工具中安裝一下這個(gè)rembg庫(kù),安裝代碼:
pip install rembg
二、下載u2net.onnx機(jī)器學(xué)習(xí)模型
安裝完成rembg模塊后,第一次運(yùn)行程序,調(diào)用這個(gè)模塊,還需要安裝機(jī)器學(xué)習(xí)模型:u2net.onnx,大小為176M,程序會(huì)自動(dòng)下載,全程不需要干涉。

下載機(jī)器學(xué)習(xí)模型
這個(gè)模型文件 (u2net.onnx) 是經(jīng)過訓(xùn)練的深度學(xué)習(xí)模型,包含了用于識(shí)別并分離前景和背景的算法權(quán)重。rembg 庫(kù)使用 U2-Net 來(lái)執(zhí)行背景去除的任務(wù)。第一次使用 rembg 時(shí),庫(kù)會(huì)自動(dòng)下載這個(gè)模型文件,以確保能夠正確運(yùn)行背景去除功能。
具體來(lái)說:模型文件 u2net.onnx:U2-Net 模型是一個(gè)開源的圖像分割模型,專門用于前景-背景分離。rembg 使用這個(gè)模型的 .onnx 文件格式,方便兼容各種框架。
由于rembg 沒有默認(rèn)包含該模型文件,因此在第一次運(yùn)行時(shí)需要下載并存儲(chǔ)在本地(C:\Users\用戶名\.u2net\u2net.onnx),下載完成后,模型文件會(huì)保存在你用戶目錄的 .u2net 文件夾中,后續(xù)運(yùn)行 rembg 就不需要重新下載。
三、編寫清除圖片背景代碼
下載完成后,程序會(huì)自動(dòng)運(yùn)行清除背景的程序,如下面的程序,批量把當(dāng)前目錄下的圖片文件,移除背景,設(shè)置透明背景后存在output文件夾下面,全程操作非常的快。
import os
from rembg import remove
from PIL import Image
# 定義輸入和輸出文件夾
input_folder = '.' # 當(dāng)前目錄
output_folder = './output/' # 輸出文件夾
# 創(chuàng)建輸出文件夾(如果不存在)
# if not os.path.exists(output_folder):
os.makedirs(output_folder,exist_ok=True)
# 遍歷當(dāng)前目錄的所有文件
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)
# 將結(jié)果保存為 PNG 格式
with open(output_path, 'wb') as output_file:
output_file.write(output_image)
print("圖片背景已去除并保存到 'output' 文件夾。")input_folder 指定輸入文件夾,這里設(shè)為當(dāng)前目錄 ./。
output_folder 是輸出文件夾(去除背景后的圖片保存位置),如果不存在,則會(huì)自動(dòng)創(chuàng)建。
腳本遍歷當(dāng)前目錄中的所有圖像文件(.png, .jpg, .jpeg),去除背景后以透明背景 PNG 格式保存到 output 文件夾中。
四、效果對(duì)比
以下是清除背景前后的效果對(duì)比,怎么樣,還算不錯(cuò)吧?
清除背景前:

清除背景后:

到此這篇關(guān)于Python實(shí)現(xiàn)批量設(shè)置圖片背景為透明的文章就介紹到這了,更多相關(guān)Python圖片背景透明內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Python中使用PIL庫(kù)實(shí)現(xiàn)圖片高斯模糊實(shí)例
這篇文章主要介紹了Python中使用PIL庫(kù)實(shí)現(xiàn)圖片高斯模糊實(shí)例,本文重點(diǎn)在修改了Pil的源碼實(shí)現(xiàn)可以自定義模糊度,需要的朋友可以參考下2015-02-02
Python使用Spire.XLS創(chuàng)建柱形圖和條形圖
Spire.XLS for Python 提供了便捷的圖表創(chuàng)建功能,讓開發(fā)者能夠僅用幾行代碼就創(chuàng)建各種專業(yè)圖表,下面我們就來(lái)看看怎么使用 Spire.XLS 創(chuàng)建柱形圖和條形圖吧2025-07-07
python利用backoff實(shí)現(xiàn)異常自動(dòng)重試詳解
backoff 是一個(gè)用于實(shí)現(xiàn) 重試機(jī)制 的 Python 庫(kù),通過 指數(shù)退避 或其他策略自動(dòng)重試失敗的操作,下面小編就來(lái)和大家詳細(xì)講講如何利用backoff實(shí)現(xiàn)異常自動(dòng)重試效果吧2025-05-05
Tensorflow 1.0之后模型文件、權(quán)重?cái)?shù)值的讀取方式
今天小編就為大家分享一篇Tensorflow 1.0之后模型文件、權(quán)重?cái)?shù)值的讀取方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來(lái)看看吧2020-02-02
徹底吃透理解Python基礎(chǔ)33個(gè)關(guān)鍵字詳細(xì)教程
這篇文章主要為大家介紹了徹底吃透理解Python中33個(gè)關(guān)鍵字的詳細(xì)教程,有需要打好Python基礎(chǔ)的同學(xué)可以借鑒參考下,希望能成為您成功路上的一塊墊腳石2021-10-10
Python求出0~100以內(nèi)的所有素?cái)?shù)
質(zhì)數(shù)又稱素?cái)?shù)。一個(gè)大于1的自然數(shù),除了1和它自身外,不能被其他自然數(shù)整除的數(shù)叫做質(zhì)數(shù);否則稱為合數(shù)。下面小編給大家?guī)?lái)了Python求出0~100以內(nèi)的所有素?cái)?shù)實(shí)例代碼,需要的朋友參考下2018-01-01

