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…