Nous allons utiliser la bibliothèque PIL pour la manipulation des images de sortes à pouvoir gérer tous les formats et récupérer facilement la composante de chaque pixel
sous forme d’un nombre compris entre 0 et 255.
Une image en niveaux de gris n’aura qu’une seule composante, une image couleur en aura 3 : une Rouge, une Verte et une Bleue.
On souhaite que l’image suivante :
donne après la permutation des couleurs R –> V –> B –> R les images suivantes :
Itération 1 | Itération 2 | Itération 3 |
---|---|---|
Exercice 1 : Compléter la fonction permuter de l’exemple suivant pour obtenir les images ci-dessus.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 |
#-*- coding:Latin-1 -*- # PIL (Python Imaging Library) est une bibliothèque pour la manipulation des images from PIL import Image #============================================================ def permuter(ListePixelsR,ListePixelsV,ListePixelsB,Largeur,Hauteur): # # # # return ListePixelsR,ListePixelsV,ListePixelsB #============================================================ # L'image a 3 composantes : RGB im = Image.open("rose.jpg") w,h=im.size #Séparation des composantes => tuple de 3 images ImagePixelsRouges,ImagePixelsVerts,ImagePixelsBleus=im.split() #transformation de l'image en liste de pixels ListePixelsRouges=list(ImagePixelsRouges.getdata()) ListePixelsVerts=list(ImagePixelsVerts.getdata()) ListePixelsBleus=list(ImagePixelsBleus.getdata()) for n in range(3): ListePixelsRouges,ListePixelsVerts,ListePixelsBleus=permuter(ListePixelsRouges,ListePixelsVerts,ListePixelsBleus,w,h) ImagePixelsRouges.putdata(ListePixelsRouges) ImagePixelsVerts.putdata(ListePixelsVerts) ImagePixelsBleus.putdata(ListePixelsBleus) imgnew = Image.merge('RGB',(ImagePixelsRouges,ImagePixelsVerts,ImagePixelsBleus)) imgnew.save("Iteration"+str(n+1)+".png") im.close() imgnew.close() |
Exercice 2 : Recommencer le même travail en complétant la fonction permuter du code suivant
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 |
#-*- coding:Latin-1 -*- # PIL (Python Imaging Library) est une bibliothèque pour la manipulation des images from PIL import Image #============================================================ def permuter(ListePixels,Largeur,Hauteur): # # # return ListePixels #============================================================ # L'image a 3 composantes : RGB im = Image.open("rose.jpg") w,h=im.size #transformation de l'image en liste de pixels sous forme de tuple (R,V,B) ListePixels=list(im.getdata()) #créer une image RGB de même dimensions par défaut noire ImagePixels=Image.new('RGB',(w,h)) for n in range(3): ListePixels=permuter(ListePixels,w,h) ImagePixels.putdata(ListePixels) ImagePixels.save("Rose"+str(n+1)+".png") im.close() ImagePixels.close() |
Exercice 3 : Améliorer le code précédent pour que l’utilisateur puisse choisir son image à partir d’une boîte de dialogue.