Livre_silo 30 août 2013 16:32 Page 379
¨
©
¨
©
¨
©
¨
©
C o p y r i g h t E y r o l l e s
379
B – Compléments sur les entrées/sorties
B.2 Lecture et écriture dans des images
Le module Image fournit un ensemble de fonctions pour ouvrir un fichier d’image, en récupérer le contenu sous un format manipulable par un programme Python et enregistrer
le résultat dans un nouveau fichier image. Il ne fait pas partie de la bibliothèque standard,
mais il est souvent inclus dans les distributions Python.
B.2.1 Lecture d’image
Comme pour les autres fichiers, on commence par ouvrir l’image via une fonction open,
mais il s’agit ici de la fonction de la bibliothèque Image :
In [6]: mb = Image.open('mario.png')
À partir de là, mb ne désigne pas l’image stockée sur le disque dur : il s’agit d’un objet
abstrait que l’on manipule dans le programme et qu’on pourra plus tard éventuellement
enregistrer dans un fichier.
• On peut afficher l’image à l’aide de la méthode show :
In [7]: mb.show()
• Ses dimensions sont données par l’attribut size (sans parenthèses, il ne s’agit pas d’une
méthode) :
In [8]: mb.size
Out[8]: (201, 251)
• L’attribut mode vaut souvent 'RGB' pour les images en couleur et 'L' pour celles en niveaux
de gris.
B.2.2 Traitement
Avant d’effectuer un traitement sur l’image, il faut décomposer cette dernière en pixels.
Pour cela, avec le module numpy, on transforme directement l’image en tableau :
In [9]: mbtab = numpy.array(mb)
Chaque pixel est représenté par un entier entre 0 et 255 pour une image en niveaux de gris,
ou par un tableau de trois entiers entre 0 et 255 pour une image en couleurs. Le TP A.7
donne des informations plus approfondies sur les raisons de cette représentation et sur les
manipulations qu’ elle permet.
On se contente ici d’appliquer un traitement simple sur les couleurs :
for lignes in mbtab:
for m in lignes:
m[0],m[1] = m[1],m[0]
Précédent

- 392/402

Suivant