Ceci est une ancienne révision du document !
Traitement des images en Python
Permet des traiter une (grande) partie du chapitre Photographie numérique de SNT.
Un grand nombre de fonctions sont disponibles dans la bibliothèque PIL (Python Imaging Library) disponible dans le paquetage Pillow, dont voici un manuel.
Après avoir installé Pillow (si nécessaire) :
pip install pillow
On dispose de la bibliothèque PIL proposant plusieurs modules dont Image qui met à disposition une classe d'objets du même nom.
De très nombreux formats de fichiers d'images sont utilisables, et reconnus par leur extension.
from PIL import Image # Ouverture d'un fichier et affectation à un objet de la classe Image mon_image = Image.open("lena.jpg")
On peut obtenir des caractéristiques de cet objet :
print("Format : ", mon_image.format) # Format de fichier largeur, hauteur = mon_image.size # Tuple l, h en pixels print("Taille : ", largeur, "x", hauteur) print("Mode : ", mon_image.mode) # L (luminance), RGB, CMYK... mon_image.show() # affichage de l'image via le programme par défaut du système
Pour les méta-données exif, et en particulier GPS, voir mon_image._getexif() en particulier.
Exemples ici et là.
Pour accéder à un pixel :
pixou = (10,10) couleurs = mon_image.getpixel(pixou) # Retourne un tuple contenant les 3 composantes r, g, b print(couleurs)
Pour créer une nouvelle image :
new_image = Image.new("L", mon_image.size) # L : mode niveaux de gris
Écrire un pixel dans l'image :
for i in range(largeur): for j in range (hauteur): r, g, b = mon_image.getpixel((i,j)) moy = int((r + g + b)/3) new_image.putpixel((i,j), moy)
Enregistrer l'image dans un fichier :
new_image.save("image_modif.png") # L'extension détermine le format de fichier