Vous avez déjà téléchargé une photo pour supprimer l’arrière-plan et vous êtes demandé où elle était stockée et que va-t-il lui arriver plus tard ? Les outils de suppression d’arrière-plan en ligne sont pratiques à utiliser, mais la commodité s’oppose souvent au contrôle. Ainsi, au lieu de télécharger vos photos sur des serveurs inconnus, créons un outil de suppression d'arrière-plan qui s'exécute entièrement sur votre propre ordinateur.
Ce que nous construisons
Nous allons créer une petite application de bureau qui :
-
Vous permet de sélectionner une image
-
Supprime l'arrière-plan à l'aide de l'IA
-
Enregistre un PNG transparent
-
Fonctionne complètement hors ligne
Tout se passe localement sur votre machine. Pour ce projet, nous utiliserons :
-
Langage de programmation Python (version 3.11, 3.12 ou 3.13)
-
rembg pour la suppression de l'arrière-plan
-
Tkinter pour une interface graphique
rembg est une bibliothèque Python open source et un outil de ligne de commande qui supprime automatiquement les arrière-plans des images à l'aide du deep learning. Il enveloppe un réseau neuronal entraîné qui peut séparer les sujets de premier plan (comme des personnes ou des objets) des arrière-plans.
Nous garderons la configuration minimale. Si vous ne l'avez pas déjà, installez la dernière version de Python à partir de python.org. Vous pouvez confirmer l'installation en exécutant ceci dans votre terminal :
python --version
Créez ensuite un dossier de projet. Ouvrez votre terminal (PowerShell ou Terminal sur macOS/Linux) et exécutez :
mkdir background-remover
cd background-remover
Dans le dossier du projet, vous devez créer un environnement virtuel Python et l'activer. Une fois terminé, installez les packages nécessaires à ce projet.
pip install rembg[cpu] pillow
rembg sera notre moteur de suppression d'arrière-plan, tandis que Pillow nous aidera à gérer les images. Nous avons terminé la configuration initiale. Nous pouvons maintenant passer à l'écriture du code.
Le outil de suppression d'arrière-plan le plus simple
Créez un nouveau fichier dans votre background-remover dossier. Appelons-le app.py. Ouvrez-le dans votre éditeur et ajoutez ceci :
from rembg import remove
from PIL import Image
input_path = "input.jpg"
output_path = "output.png"
with Image.open(input_path) as img:
result = remove(img)
result.save(output_path)
C'est tout le outil de suppression d'arrière-plan. Comprenons ce qui se passe.
Nous importons d’abord les deux bibliothèques que nous avons installées. Ensuite, nous définissons les chemins d'entrée et de sortie, y compris le nom du fichier image. Dans ce cas, c'est dans le répertoire courant. Mettez une image nommée input.jpg dans le même dossier que votre script.
Gardons le résultat sous output.png car les fichiers PNG prennent en charge la transparence. JPEG ne le fait pas. Lorsque l'arrière-plan est supprimé, ce qui reste est une image avec des pixels transparents. Cela ne fonctionne correctement qu'avec PNG.
La partie suivante fait trois choses :
-
Ouvre l'image.
-
L'envoie via le modèle de suppression d'arrière-plan.
-
Enregistre l'image traitée.
Le with La déclaration garantit que le fichier est correctement fermé après le traitement. C'est juste une bonne pratique.
Il est maintenant temps d'exécuter le script. Dans votre terminal, saisissez :
python app.py
La première fois que vous l'exécutez, rembg va télécharger son modèle. Cela peut prendre un moment. Après cela, le traitement est rapide et entièrement local. Si tout a fonctionné, tu verras output.png apparaître dans votre dossier avec l'arrière-plan supprimé.


Le commutateur Python « secret » : comment un seul indicateur accélère l'exécution de vos scripts
Python -O ne rendra pas comme par magie chaque script plus rapide, mais dans les bonnes charges de travail, c'est une victoire gratuite : voici comment le tester en toute sécurité.
Pour le moment, le scénario fonctionne, mais il est rigide. Il traite uniquement « input.jpg » et génère toujours « output.png ». C'est bien pour une démo, mais les vrais outils acceptent les commentaires de l'utilisateur. Améliorons-le. Mettez à jour votre app.py à ceci :
import sys
import os
from rembg import remove
from PIL import Image
if len(sys.argv) < 2:
print("Usage: python app.py ")
sys.exit(1)
input_path = sys.argv[1]
if not os.path.exists(input_path):
print("Error: File does not exist.")
sys.exit(1)
filename, _ = os.path.splitext(input_path)
output_path = f"blog_no_bg.png"
with Image.open(input_path) as img:
result = remove(img)
result.save(output_path)
print(f"Background removed successfully: site")
Pas besoin d'avoir peur du code car je vais tout vous expliquer. Premièrement, nous avons sys.argv[1]. Cela lit tout ce que vous tapez après python app.py. Ainsi, par exemple, si vous exécutez :
python app.py my_image.jpg
Alors sys.argv[1] devient my_image.jpg. Ensuite, nous avons quelques validations de base. Nous voyons si l'utilisateur a passé un argument de ligne de commande ou non en déterminant la longueur de sys.argv. Ensuite, nous vérifions également si l’argument transmis par l’utilisateur est correct ou non. En cas de chemin ou de nom de fichier erroné, nous alertons l'utilisateur.
Enfin, nous disposons d'un système de dénomination automatique qui ajoute « _no_bg.png » au nom du fichier d'entrée et l'enregistre comme fichier de sortie après la suppression en arrière-plan. Exécutez à nouveau le programme, mais cette fois, passez votre nom de fichier en argument :
python app.py your_image.jpg
5 puissants one-liners Python qui feront de vous un meilleur codeur
Pourquoi écrire dix lignes de code quand une seule suffit ? Des échanges de variables magiques au comptage de données à grande vitesse, ces extraits Python transformeront votre code.
Transformez-le en une véritable application de bureau
La version en ligne de commande est puissante. Mais tout le monde ne veut pas ouvrir un terminal et taper des commandes. Transformons cela en une application graphique Python en utilisant Tkinter.
Tkinter est livré avec Python, nous n'avons donc pas besoin de nouvelles dépendances. Nous réutiliserons la même logique de suppression d’arrière-plan et ajouterons une couche visuelle par-dessus.
Créons un nouveau fichier nommé gui_app.py. Créez une fenêtre simple :
import tkinter as tk
root = tk.Tk()
root.title("Background Remover")
root.geometry("400x400")
root.mainloop()
J'essaie de l'exécuter.
python gui_app.py
Vous verrez une petite fenêtre vide. C'est notre base. Permettons désormais aux utilisateurs de choisir une image à l'aide d'un sélecteur de fichiers. Mettez à jour le fichier :
import tkinter as tk
from tkinter import filedialog, messagebox
from rembg import remove
from PIL import Image, ImageTk
import os
selected_file = None
def select_file():
global selected_file
file_path = filedialog.askopenfilename(
filetypes=[("Image Files", "*.jpg *.jpeg *.png *.webp")]
)
if file_path:
selected_file = file_path
status_label.config(text=f"Selected: site")
img = Image.open(file_path)
img.thumbnail((250, 250))
tk_img = ImageTk.PhotoImage(img)
preview_label.config(image=tk_img)
preview_label.image = tk_img
root = tk.Tk()
root.title("Background Remover")
root.geometry("400x400")
select_button = tk.Button(root, text="Select Image", command=select_file)
select_button.pack(pady=10)
status_label = tk.Label(root, text="No file selected")
status_label.pack()
# Create a label specifically for the image preview
preview_label = tk.Label(root)
preview_label.pack(pady=10)
root.mainloop()
Vous pouvez maintenant cliquer sur un bouton et choisir une image. Le nom du fichier apparaît dans la fenêtre, accompagné d'un joli aperçu. Connectons maintenant le traitement proprement dit. Ajoutez cette fonction ci-dessus root.mainloop():
def remove_background():
if not selected_file:
messagebox.showerror("Error", "Please select an image first.")
return
filename, _ = os.path.splitext(selected_file)
output_path = f"site_no_bg.png"
try:
with Image.open(selected_file) as img:
result = remove(img)
result.save(output_path)
messagebox.showinfo("Success", f"Saved to:\n{output_path}")
except Exception as e:
messagebox.showerror("Error", str(e))
Ajoutez ensuite le bouton :
remove_button = tk.Button(root, text="Remove Background", command=remove_background)
remove_button.pack(pady=10)
Placez-le après la fonction ci-dessus. Maintenant, exécutez le programme. Sélectionnez une image. Appuyez sur le bouton « Supprimer l'arrière-plan ». La sortie sera enregistrée dans le même dossier.
C'est ça. Vous avez transformé un script en application de bureau.
Plus de façons de mettre à niveau
J'ai essayé de le garder minimal. Si vous le souhaitez, il existe d’innombrables façons de peaufiner cela. Pour commencer, vous pouvez également mettre un aperçu du résultat et les voir côte à côte dans la même fenêtre. Vous pouvez ajouter un traitement par lots afin de pouvoir supprimer l'arrière-plan de plusieurs images en une seule fois. Vous pouvez ajouter plus de puissance visuelle, comme une barre de progression, ou même ajouter un glisser-déposer pour plus de commodité.
Une autre bonne idée pour ce projet est de le transformer en un exécutable autonome à l'aide de PyInstaller. De cette façon, vous n’aurez plus besoin d’exécuter le programme à partir de la ligne de commande. Vous pouvez simplement double-cliquer sur l’application pour l’exécuter, comme n’importe quel logiciel classique.
La prochaine fois que vous aurez besoin d'une simple suppression de l'arrière-plan d'une image, vous n'aurez pas à vous soucier de télécharger des images sur des sites tiers ou d'atteindre les limites d'un niveau gratuit. Parce que vous disposez désormais de votre propre outil. Vous pouvez trouver la version finale peaufinée sur mon GitHub.
Vous pouvez lire l’article original (en Angais) sur le {site|blog}www.howtogeek.com