Enseñaremos con pocas líneas de código en python de cómo eliminar el fondo a una imagen. Este script lo uso mucho para eliminar el fondo a productos, me ayuda a ahorra tiempo, aquí les dejo un ejemplo del resultado final.
Para ello utilizamos la herramienta de código abierto rembg
Instalar Rembg
pip install rembg
Asegúrese de que esté instalada la versión correcta de Pillow. Debería ser >= 9.3.0
Si este no es el caso, puedes intentar usar este comando
pip install --ignore-installed Pillow==9.3.0
Quitar fondo script
from rembg import remove
input_path = 'input.png'
output_path = ' sin-fondo/output.webp'
with open(input_path, 'rb') as i:
with open(output_path, 'wb') as o:
input = i.read()
output = remove(input)
o.write(output)
input_path : ruta del archivo que desea eliminar el fondo
output_path : ruta destino de la imagen procesada
Guada el script borrar_fondo.py y ejecutalo
py borrar_fondo.py
Ejecútalo como CLI
También puedes usar rembg
desde la línea de comando:
rembg i path/to/input.png path/to/output.png
Ya con esto el script está trabajando… pero ahora vamos a darle un toque para hacerlo más fácil de usar, y no tener que apuntar la ruta por cada imagen, sino que nos muestre la ventana del explorador de archivos, para poder seleccionar la imagen que vamos a tratar y su destino, la imagen sin el fondo. Recuerde apuntar la extensión de la imagen en su destino, cuando vayan a guardar. Ejemplo imagen1.png , .webp , etc…
Para esto vamos a instalar easygui , que proporciona una interfaz de usuario básica, para operaciones de apertura y guardado de archivos.
Instalando easygui
pip install easygui
Escribiendo el código
El código es esencialmente muy sencillo, con sólo ocho líneas de Python podemos eliminar el fondo de cualquier imagen. Los módulos subyacentes, rembg y easygui harán todo el trabajo pesado por nosotros.
1. Desde el módulo rembg, importe la clase de eliminación. Esto es lo que usaremos para eliminar el fondo.
from rembg import remove
2. Desde la biblioteca de imágenes de Python (PIL), importe la imagen. PIL es un módulo potente que contiene muchas opciones diferentes para crear y trabajar con imágenes y secuencias de imágenes.
from PIL import Image
3. Importe el módulo easygui y cree una referencia a él como «por ejemplo». Easygui es nuestra GUI para operaciones básicas con archivos. Cambiarle el nombre a «por ejemplo» hace que sea más fácil trabajar con él.
import easygui as eg
4. Cree un objeto, input_path y utilícelo para almacenar la ruta y el nombre de un archivo del que deseamos eliminar el fondo. Usando el cuadro de diálogo de apertura de archivos de easygui, le damos un título al diálogo para explicar para qué sirve. El archivo elegido y su ruta se almacenan en el objeto input_path.
input_path = eg.fileopenbox(title='Select image file')
5. Cree un objeto, ruta_salida y use el cuadro de diálogo para guardar archivos de easygui para capturar la ruta del archivo y guardarla en el objeto.
output_path = eg.filesavebox(title='Save file to..')
6. Cree un objeto, ingréselo y úselo para abrir y almacenar la imagen a través de la función Image.open de PIL.
input = Image.open(input_path)
7. Utilice rembg para eliminar el fondo de la imagen.
output = remove(input)
8. Guarde la nueva imagen utilizando la ruta del archivo almacenada en ruta_salida.
output.save(output_path)
9. Guarde el código como borrar_fondo.py.
El Código
from rembg import remove
from PIL import Image
import easygui as eg
input_path = eg.fileopenbox(title='Seleccione la imagen')
output_path = eg.filesavebox(title='Guardar imagen en..')
input = Image.open(input_path)
output = remove(input)
output.save(output_path)
Para ejecutar el script abra el terminal o símbolo del sistema en windows , ubique la ruta donde guardo el archivo python y ejecútelo.
py borrar_fondo.py
Recuerda apuntar la extensión de la imagen en su destino, cuando vayan a guardar. Ejemplo imagen1.png , .webp , etc…