Outils pour utilisateurs

Outils du site


prog:python:python-image

Traitement des images en Python

Lena

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 :

# Par exemple :
pip install pillow
# à adapter selon distribution de Python (conda etc.)

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.

Exemple de traitement

L'exemple suivant consiste à ouvrir une image couleur dans un fichier jpg, la charger en mémoire, créer une autre image - en niveaux de gris cette fois - dont les pixels auront pour valeur la moyenne des composantes de l'image couleur, et enfin enregistrer cette nouvelle image dans un fichier png.

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 .

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 :

nouvelle_image = Image.new("L", mon_image.size) # L : mode niveaux de gris

Écrire des pixels 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)
        nouvelle_image.putpixel((i,j), moy)

Enregistrer l'image dans un fichier :

nouvelle_image.save("image_modif.png") # L'extension détermine le format de fichier
 
# fermeture des fichiers
mon_image.close()
nouvelle_image.close()
prog/python/python-image.txt · Dernière modification : 2020/04/06 09:02 de jbpuel