Rembg es una herramienta para eliminar el fondo de las imágenes.
Si este proyecto te ha ayudado, considera hacer una donación.
API de eliminación de fondo de PhotoRoom https://photoroom.com/api API de eliminación de fondo rápida y precisa |
python: >3.7, <3.13
Si ya tiene onnxruntime
instalado, simplemente instale rembg
:
pip install rembg # for library
pip install " rembg[cli] " # for library + cli
De lo contrario, instale rembg
con soporte explícito de CPU/GPU.
Soporte de CPU:
pip install rembg[cpu] # for library
pip install " rembg[cpu,cli] " # for library + cli
Soporte de GPU:
En primer lugar, debe verificar si su sistema es compatible con onnxruntime-gpu
.
Vaya a https://onnxruntime.ai y consulte la matriz de instalación.
Si es así, simplemente ejecute:
pip install " rembg[gpu] " # for library
pip install " rembg[gpu,cli] " # for library + cli
Después del paso de instalación, puede usar rembg simplemente escribiendo rembg
en la ventana de su terminal.
El comando rembg
tiene 4 subcomandos, uno para cada tipo de entrada:
i
para archivosp
para carpetass
para servidor httpb
para flujo binario RGB de 24 píxelesPuede obtener ayuda sobre el comando principal usando:
rembg --help
Además, sobre todos los subcomandos que utilizan:
rembg < COMMAND > --help
i
Se utiliza cuando la entrada y la salida son archivos.
Eliminar el fondo de una imagen remota
curl -s http://input.png | rembg i > output.png
Eliminar el fondo de un archivo local
rembg i path/to/input.png path/to/output.png
Eliminar el fondo especificando un modelo.
rembg i -m u2netp path/to/input.png path/to/output.png
Elimina el fondo devolviendo solo la máscara.
rembg i -om path/to/input.png path/to/output.png
Quitar el fondo aplicando un tapete alfa.
rembg i -a path/to/input.png path/to/output.png
Pasando parámetros extras
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
Se utiliza cuando la entrada y la salida son carpetas.
Eliminar el fondo de todas las imágenes de una carpeta
rembg p path/to/input path/to/output
Igual que antes, pero atento a que se procesen archivos nuevos o modificados
rembg p -w path/to/input path/to/output
s
Se utiliza para iniciar el servidor http.
rembg s --host 0.0.0.0 --port 7000 --log_level info
Para ver la documentación completa de los puntos finales, vaya a: http://localhost:7000/api
.
Eliminar el fondo de la URL de una imagen
curl -s " http://localhost:7000/api/remove?url=http://input.png " -o output.png
Eliminar el fondo de una imagen cargada
curl -s -F file=@/path/to/input.jpg " http://localhost:7000/api/remove " -o output.png
b
Procese una secuencia de imágenes RGB24 desde stdin. Esto está pensado para usarse con otro programa, como FFMPEG, que genera datos de píxeles RGB de 24 a la salida estándar, que se canaliza a la entrada estándar de este programa, aunque nada le impide escribir imágenes manualmente en la entrada estándar.
rembg b image_width image_height -o output_specifier
Argumentos:
output-%03u.png
, los archivos de salida se denominarán output-000.png
, output-001.png
, output-002.png
, etc. guardado en formato PNG independientemente de la extensión especificada. Puede omitirlo para escribir resultados en la salida estándar.Ejemplo de uso con FFMPEG:
ffmpeg -i input.mp4 -ss 10 -an -f rawvideo -pix_fmt rgb24 pipe:1 | rembg b 1280 720 -o folder/output-%03u.png
Los valores de ancho y alto deben coincidir con la dimensión de las imágenes de salida de FFMPEG. Nota para FFMPEG, la parte " -an -f rawvideo -pix_fmt rgb24 pipe:1
" es necesaria para que todo funcione.
Entrada y salida como bytes
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 )
Entrada y salida como imagen 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 )
Entrada y salida como una matriz numerosa
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 )
Forzar salida como bytes
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 )
Cómo iterar sobre archivos de forma performática
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 )
Para ver una lista completa de ejemplos sobre cómo usar rembg, vaya a la página de ejemplos.
Simplemente reemplace el comando rembg
por docker run danielgatis/rembg
.
Prueba esto:
docker run -v path/to/input:/rembg danielgatis/rembg i input.png path/to/output/output.png
Todos los modelos se descargan y guardan en la carpeta de inicio del usuario en el directorio .u2net
.
Los modelos disponibles son:
Si necesita modelos más ajustados, pruebe esto: #193 (comentario)
Esta biblioteca depende directamente de la biblioteca onnxruntime. Por lo tanto, solo podemos actualizar la versión de Python cuando onnxruntime brinda soporte para esa versión específica.
¿Te gustó algo de mi trabajo? Cómprame un café (o más probablemente una cerveza)
Copyright (c) 2020-presente Daniel Gatis
Licenciado bajo licencia MIT