2503
Commentaire:
|
2785
|
Texte supprimé. | Texte ajouté. |
Ligne 1: | Ligne 1: |
Le but de ce sujet de TP est d’introduire l’utilisation de modules externes en Python, à partir de l’exemple de la bibliothèque Pillow : celle-ci permet de manipuler facilement des fichiers d’images dans des formats variés. |
|
Ligne 3: | Ligne 7: |
Ce TP utilise la bibliothèque Pillow : voir les [[Manipulation d'image en Python 3|instructions]]. | Pour l’installation éventuelle de Pillow, des instructions sont disponibles sur [[Manipulation d'image en Python 3|une page séparée]]. |
Le but de ce sujet de TP est d’introduire l’utilisation de modules externes en Python, à partir de l’exemple de la bibliothèque Pillow : celle-ci permet de manipuler facilement des fichiers d’images dans des formats variés.
Préambule
Pour l’installation éventuelle de Pillow, des instructions sont disponibles sur une page séparée.
Avant de commencer, je vous suggère d’aller piocher une image de test pas trop grosse (disons au maximum 1024 pixels dans chaque dimension). À défaut en voilà deux, obtenues à partir d’une photo mise à disposition par Hans Stieglitz sur les Wikimedia commons, et soumise à la licence CC-BY-SA 3.0 :
Filtres d’image
Cette partie du TP concerne l’algorithmique de l’image. Plus précisément, on manipulera des images matricielles, c’est-à-dire représentées par des tableaux de pixels.
On utilise Pillow pour s’affranchir de la question des formats de fichiers.
Ouverture et enregistrement de fichiers d’image avec Pillow
Le bout de code suivant convertit le fichier tigre.jpg (au format JPEG) en tigre.png (au format PNG) :
import PIL.Image as Image im = Image.open('tigre.jpg') im.save('tigre.png')
Essayez chez vous.
Informations sur une image
Dans un interpréteur Python, essayez :
import PIL.Image as Image im = Image.open('tigre.jpg')
puis essayez d’utiliser la documentation interne de python (par exemple via la commande help de l’interpréteur) pour explorer les informations fournies par l’objet image.
Essayez par exemple d’obtenir sa taille.
Représentation d’une image en mémoire
Si im est une image chargée avec PIL.Image.open, on accède à ses pixels via la fonction im.load() qui renvoie un tableau indexé par des couples d’entiers (et non pas une matrice au sens python du terme).
Par exemple,
pixels = im.load() print(pixels[0,0])
renvoie la valeur du pixel en haut à gauche de l’image.
Affichez des pixels de l’image en couleurs, puis de l’image en noir et blanc. Que remarquez-vous ?
Modifier une image
Pour modifier un pixel, on change sa valeur dans le tableau des pixels. Essayez :
pixels[0,0] = 0 im.save('tigre_mod.png')
Est-ce que ça fonctionne avec l’image en noir et blanc ? Avec celle en couleurs ? Quel est l’effet produit.