Python實(shí)現(xiàn)批量設(shè)置圖片背景為透明
我們?nèi)粘I钪兄谱鱌PT等教學(xué)資源時(shí),需要批量去除圖片背景,就可以使用 Python 的 rembg 庫。
這個(gè)庫基于神經(jīng)網(wǎng)絡(luò)模型,去背景效果較好,可以批量處理png, jpg, jpeg等圖片。采用以下代碼可以批量處理當(dāng)前目錄下的所有圖片,去除背景后并保存為透明背景的圖像存在output當(dāng)中。
一、安裝rembg庫
不過,使用前需要在cmd下或者pycharm, thonny等pyhon的idle調(diào)試工具中安裝一下這個(gè)rembg庫,安裝代碼:
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í)模型,包含了用于識別并分離前景和背景的算法權(quán)重。rembg 庫使用 U2-Net 來執(zhí)行背景去除的任務(wù)。第一次使用 rembg 時(shí),庫會(huì)自動(dòng)下載這個(gè)模型文件,以確保能夠正確運(yùn)行背景去除功能。
具體來說:模型文件 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 文件夾中。
四、效果對比
以下是清除背景前后的效果對比,怎么樣,還算不錯(cuò)吧?
清除背景前:

清除背景后:

到此這篇關(guān)于Python實(shí)現(xiàn)批量設(shè)置圖片背景為透明的文章就介紹到這了,更多相關(guān)Python圖片背景透明內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
用Python將動(dòng)態(tài)GIF圖片倒放播放的方法
GIF(Graphics Interchange Format) 是一種可以用來呈現(xiàn)動(dòng)畫效果的圖片格式,原理就是保存很多幀(Frame)靜態(tài)圖像,然后連續(xù)呈現(xiàn)。這篇文章主要介紹了用Python將動(dòng)態(tài)GIF圖片倒放播放的方法,需要的朋友可以參考下2016-11-11
Python創(chuàng)建7種不同的文件格式的方法總結(jié)
今天的這篇文章呢,小編來介紹一下如何通過Python來創(chuàng)建各種形式的文件,這里包括了:文本文件、CSV文件、Excel文件、壓縮文件、XML文件、JSON文件和PDF文件,需要的可以參考一下2023-01-01
Django def clean()函數(shù)對表單中的數(shù)據(jù)進(jìn)行驗(yàn)證操作
這篇文章主要介紹了Django def clean()函數(shù)對表單中的數(shù)據(jù)進(jìn)行驗(yàn)證操作,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧2020-07-07
python 計(jì)算數(shù)據(jù)偏差和峰度的方法
今天小編就為大家分享一篇python 計(jì)算數(shù)據(jù)偏差和峰度的方法,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧2019-06-06
Pandas.DataFrame行和列的轉(zhuǎn)置的實(shí)現(xiàn)
本文主要介紹了Pandas.DataFrame行和列的轉(zhuǎn)置的實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2023-02-02
python 實(shí)現(xiàn)將Numpy數(shù)組保存為圖像
今天小編就為大家分享一篇python 實(shí)現(xiàn)將Numpy數(shù)組保存為圖像,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧2020-01-01
eclipse創(chuàng)建python項(xiàng)目步驟詳解
在本篇內(nèi)容里小編給大家分享了關(guān)于eclipse創(chuàng)建python項(xiàng)目的具體步驟和方法,需要的朋友們跟著學(xué)習(xí)下。2019-05-05

