Python實現(xiàn)批量設置圖片背景為透明
我們?nèi)粘I钪兄谱鱌PT等教學資源時,需要批量去除圖片背景,就可以使用 Python 的 rembg 庫。
這個庫基于神經(jīng)網(wǎng)絡模型,去背景效果較好,可以批量處理png, jpg, jpeg等圖片。采用以下代碼可以批量處理當前目錄下的所有圖片,去除背景后并保存為透明背景的圖像存在output當中。
一、安裝rembg庫
不過,使用前需要在cmd下或者pycharm, thonny等pyhon的idle調試工具中安裝一下這個rembg庫,安裝代碼:
pip install rembg
二、下載u2net.onnx機器學習模型
安裝完成rembg模塊后,第一次運行程序,調用這個模塊,還需要安裝機器學習模型:u2net.onnx,大小為176M,程序會自動下載,全程不需要干涉。
下載機器學習模型
這個模型文件 (u2net.onnx) 是經(jīng)過訓練的深度學習模型,包含了用于識別并分離前景和背景的算法權重。rembg 庫使用 U2-Net 來執(zhí)行背景去除的任務。第一次使用 rembg 時,庫會自動下載這個模型文件,以確保能夠正確運行背景去除功能。
具體來說:模型文件 u2net.onnx:U2-Net 模型是一個開源的圖像分割模型,專門用于前景-背景分離。rembg 使用這個模型的 .onnx 文件格式,方便兼容各種框架。
由于rembg 沒有默認包含該模型文件,因此在第一次運行時需要下載并存儲在本地(C:\Users\用戶名\.u2net\u2net.onnx),下載完成后,模型文件會保存在你用戶目錄的 .u2net 文件夾中,后續(xù)運行 rembg 就不需要重新下載。
三、編寫清除圖片背景代碼
下載完成后,程序會自動運行清除背景的程序,如下面的程序,批量把當前目錄下的圖片文件,移除背景,設置透明背景后存在output文件夾下面,全程操作非常的快。
import os from rembg import remove from PIL import Image # 定義輸入和輸出文件夾 input_folder = '.' # 當前目錄 output_folder = './output/' # 輸出文件夾 # 創(chuàng)建輸出文件夾(如果不存在) # 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 是輸出文件夾(去除背景后的圖片保存位置),如果不存在,則會自動創(chuàng)建。
腳本遍歷當前目錄中的所有圖像文件(.png, .jpg, .jpeg),去除背景后以透明背景 PNG 格式保存到 output 文件夾中。
四、效果對比
以下是清除背景前后的效果對比,怎么樣,還算不錯吧?
清除背景前:
清除背景后:
到此這篇關于Python實現(xiàn)批量設置圖片背景為透明的文章就介紹到這了,更多相關Python圖片背景透明內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!
相關文章
Python創(chuàng)建7種不同的文件格式的方法總結
今天的這篇文章呢,小編來介紹一下如何通過Python來創(chuàng)建各種形式的文件,這里包括了:文本文件、CSV文件、Excel文件、壓縮文件、XML文件、JSON文件和PDF文件,需要的可以參考一下2023-01-01Django def clean()函數(shù)對表單中的數(shù)據(jù)進行驗證操作
這篇文章主要介紹了Django def clean()函數(shù)對表單中的數(shù)據(jù)進行驗證操作,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2020-07-07Pandas.DataFrame行和列的轉置的實現(xiàn)
本文主要介紹了Pandas.DataFrame行和列的轉置的實現(xiàn),文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2023-02-02python 實現(xiàn)將Numpy數(shù)組保存為圖像
今天小編就為大家分享一篇python 實現(xiàn)將Numpy數(shù)組保存為圖像,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2020-01-01