Filtrer une image

Dimanche 08 Décembre 2024

On peut traiter les images avec Python en jouant sur la couleur de chaque pixel.
On créée alors ce qu'on appelle un filtre.

1. Parcourir une image

Pour traiter une image, il faut d'aborder l'ouvrir avec Python.
Pour cela, on l'enregistre sur son ordinateur et on repère son URL, que l'on notera dans tout le TP par C:\MON_CHEMIN_JUSQUE\mon_image.jpg.
Attention : penser à mettre votre URL !

from PIL import Image 
source = Image.open("C:\MON_CHEMIN_JUSQUE\mon_image.jpg") 
w, h = source.size 
for x in range(w): 
  for y in range(h): 
    p = source.getpixel((x,y)) 
    source.putpixel((x, y), (p[0], p[1], p[2])) # Ligne importante 
source.show()

Ici, w est la longeur de l'image (width), h est la hauteur (height) et p regroupe les trois couleurs de chaque pixel :

- p[0] pour le rouge.
- p[1] pour le vert.
- p[2] pour le bleu.

2. Création d'un filtre

La ligne importante dans le programme est la clef pour créer des filtres.
Par exemple, on peut la remplacer par :

 
source.putpixel((x, y), (p[0], p[1], 0)

Dans ce cas, chaque pixel garde sa couleur rouge, sa couleur verte mais perd sa couleur bleu.

3. À vous de jouer

Comment modifier la ligne importante pour :

+ Ne garder que la couleur rouge ?
+ Inverser les couleurs vert et bleu ?
+ Avoir une image en nuances de gris ?
+ Dégrader la couleur rouge horizontalement ?
+ N'avoir qu'un pixel sur deux ?

Attention : il faudra parfois ajouter plusieurs lignes à la ligne importante !