CHAPITRE 8
IMAGES
1 Représentation informatique des images
Une image est un tableau (bidimensionnel) de pixels. Chaque pixel a une couleur, qui est en général codée :
•soit par une entier entre 0 et 255 (dans ce cas, l’image est en niveaux de gris, le 0 correspond à un pixel noir et le
255 à un pixel blanc) ;
•soit par un triplet (r,g,b) d’entiers compris entre 0 et 255. Ici, le rcorrespond à la composant rouge, le gà la
composante verte (green) et le bà la composante bleue. La couleur est obtenue par synthèse additive : (0,0,0)
correspond au noir, (200,200,200) à un gris clair, (255,0,0) à un rouge éclatant, (255,255,0) à un jaune vif (rouge
+vert), (100,50,150) à un violet assez foncé...
2 Le module PIL de Python
Nous allons utiliser le module PIL, ou plutôt un petit morceau de ce module. PIL (Python Imaging Library) ne fait
pas partie de la bibliothèque standard de Python : il s’agit d’une bibliothèque supplémentaire (libre) qu’il faut installer.
Pour les fonctions les plus élémentaires, on peut regarder l’exemple suivant :
from PIL import Image
im = Image .open ( " s tag e . j p g " )
# ch arg e l e f i c h i e r " s t a g e . j pg " ( q ui d o i t se t r o u v e r dans l e même
# r é p e r t o i r e que no t r e f i c h i e r p y t hon ) dans l ’ o b j e t im
im . show ()
# a f f i c h e l ’ im age d an s une f e n ê t r e g r a p h i q u e
coin_h_g = im. getpix el ((0 , 0))
# r é cup è r e l a v a l e u r du p i x e l en h aut à gauche ( sous l a forme d ’ un
# t r i p l e t ( r , g , b ) ) .
largeur , hauteur = im .size
# di m ensi o ns de l ’ image ( en nombre de p i x e l s )
im.putpixel ((0 , hauteur - 1)) = (255 , 0, 0)
# c o l o r i e l e p i x e l en ba s à gauche en roug e
im. save( " stage_modifie . jpg ")
On peut déjà signaler deux méthodes souvent plus pratiques pour accéder aux pixels d’une image (que l’on supposera
avoir été ouverte dans l’objet im par la commande im = Image.open(nom_de_fichier)) :
•on peut récupérer un tableau contenant les pixels par pixels = im.load(). On peut alors accéder au pixel de
coordonnées (x,y) par pixels[x, y] (que ce soit pour lire ou écrire) ;
Lyc´
ee du Parc – BCPST 851 – Informatique 1