Rembg 是一個去除影像背景的工具。
如果這個項目對您有幫助,請考慮捐款。
PhotoRoom 刪除背景 API https://photoroom.com/api 快速且準確的背景去除 API |
python: >3.7, <3.13
如果您已經安裝了onnxruntime
,只需安裝rembg
:
pip install rembg # for library
pip install " rembg[cli] " # for library + cli
否則,請安裝具有明確 CPU/GPU 支援的rembg
。
CPU支援:
pip install rembg[cpu] # for library
pip install " rembg[cpu,cli] " # for library + cli
GPU 支援:
首先,您需要檢查您的系統是否支援onnxruntime-gpu
。
造訪 https://onnxruntime.ai 並檢查安裝矩陣。
如果是,只需運行:
pip install " rembg[gpu] " # for library
pip install " rembg[gpu,cli] " # for library + cli
安裝步驟完成後,您只需在終端機視窗中輸入rembg
即可使用 rembg。
rembg
指令有 4 個子指令,每個子指令對應一種輸入類型:
i
用於文件p
代表資料夾s
代表 http 伺服器b
表示 RGB24 像素二進位流您可以使用以下命令來取得有關主命令的協助:
rembg --help
另外,關於所有使用的子命令:
rembg < COMMAND > --help
i
當輸入和輸出是文件時使用。
刪除遠端影像的背景
curl -s http://input.png | rembg i > output.png
從本機檔案中刪除背景
rembg i path/to/input.png path/to/output.png
刪除指定模型的背景
rembg i -m u2netp path/to/input.png path/to/output.png
刪除背景僅返回蒙版
rembg i -om path/to/input.png path/to/output.png
應用 Alpha 摳圖刪除背景
rembg i -a path/to/input.png path/to/output.png
傳遞額外參數
SAM example
rembg i -m sam -x ' { "sam_prompt": [{"type": "point", "data": [724, 740], "label": 1}] } ' examples/plants-1.jpg examples/plants-1.out.png
Custom model example
rembg i -m u2net_custom -x ' {"model_path": "~/.u2net/u2net.onnx"} ' path/to/input.png path/to/output.png
p
當輸入和輸出是資料夾時使用。
刪除資料夾中所有圖像的背景
rembg p path/to/input path/to/output
與以前相同,但監視要處理的新/更改的文件
rembg p -w path/to/input path/to/output
s
用於啟動http伺服器。
rembg s --host 0.0.0.0 --port 7000 --log_level info
若要查看完整的端點文檔,請造訪: http://localhost:7000/api
。
從圖像網址中刪除背景
curl -s " http://localhost:7000/api/remove?url=http://input.png " -o output.png
刪除上傳圖像的背景
curl -s -F file=@/path/to/input.jpg " http://localhost:7000/api/remove " -o output.png
b
處理來自 stdin 的 RGB24 影像序列。它旨在與另一個程式(例如 FFMPEG)一起使用,該程式將 RGB24 像素資料輸出到 stdout,該資料透過管道傳輸到該程式的 stdin,儘管沒有什麼可以阻止您在 stdin 手動輸入影像。
rembg b image_width image_height -o output_specifier
論點:
output-%03u.png
,則輸出檔案將命名為output-000.png
、 output-001.png
、 output-002.png
等。是無論指定的副檔名為何,均以 PNG 格式儲存。您可以省略它以將結果寫入標準輸出。FFMPEG 的用法範例:
ffmpeg -i input.mp4 -ss 10 -an -f rawvideo -pix_fmt rgb24 pipe:1 | rembg b 1280 720 -o folder/output-%03u.png
寬度和高度值必須與 FFMPEG 輸出影像的尺寸相符。請注意,對於 FFMPEG,「 -an -f rawvideo -pix_fmt rgb24 pipe:1
」部分是整個工作正常運作所必需的。
以位元組為單位的輸入和輸出
from rembg import remove
input_path = 'input.png'
output_path = 'output.png'
with open ( input_path , 'rb' ) as i :
with open ( output_path , 'wb' ) as o :
input = i . read ()
output = remove ( input )
o . write ( output )
輸入和輸出為 PIL 影像
from rembg import remove
from PIL import Image
input_path = 'input.png'
output_path = 'output.png'
input = Image . open ( input_path )
output = remove ( input )
output . save ( output_path )
作為 numpy 數組的輸入和輸出
from rembg import remove
import cv2
input_path = 'input.png'
output_path = 'output.png'
input = cv2 . imread ( input_path )
output = remove ( input )
cv2 . imwrite ( output_path , output )
強制輸出為位元組
from rembg import remove
input_path = 'input.png'
output_path = 'output.png'
with open ( input_path , 'rb' ) as i :
with open ( output_path , 'wb' ) as o :
input = i . read ()
output = remove ( input , force_return_bytes = True )
o . write ( output )
如何以執行方式迭代文件
from pathlib import Path
from rembg import remove , new_session
session = new_session ()
for file in Path ( 'path/to/folder' ). glob ( '*.png' ):
input_path = str ( file )
output_path = str ( file . parent / ( file . stem + ".out.png" ))
with open ( input_path , 'rb' ) as i :
with open ( output_path , 'wb' ) as o :
input = i . read ()
output = remove ( input , session = session )
o . write ( output )
若要查看有關如何使用 rembg 的完整範例列表,請前往範例頁面。
只需將rembg
指令替換為docker run danielgatis/rembg
即可。
試試這個:
docker run -v path/to/input:/rembg danielgatis/rembg i input.png path/to/output/output.png
所有模型都會下載並保存在使用者主資料夾的.u2net
目錄中。
可用的型號有:
如果您需要更多微調模型,請嘗試以下操作:#193(評論)
該庫直接依賴 onnxruntime 庫。因此,只有當onnxruntime提供對特定版本的支援時,我們才能更新Python版本。
喜歡我的一些作品嗎?給我買杯咖啡(或更可能是啤酒)
版權所有 (c) 2020 年至今 Daniel Gatis
根據 MIT 許可證獲得許可