Les images numériques

Presque comme Snapchat !

II. Traiter les images avec le langage Python

1-Ouverture et définition de l'image

Description des lignes du programme ci-dessus :

  • Ligne 1 : Importe la bibliothèque PIL (ou Pillow) permettant de traiter les images.
  • Ligne 2 : Ouvre le fichier image "sernin.jpg" et l'affecte à la variable img.
  • Ligne 3 : Crée les variables dont le nom est assez explicite : largeur et hauteur.
  • Ligne 4 et 5 : Affiche du texte dans la console (partie sombre de l'éditeur).

À vous de jouer :

  1. Cliquer sur RUN (bouton vert en haut de l'éditeur) pour observer le résultat.
  2. Modifier le code pour afficher les dimensions de l'autre image disponible nommée "chat.jpg". (Il est possible de visualiser les fichiers disponibles en cliquant sur l'icône "Files" en haut à gauche de l'éditeur.)
  3. La définition de l'image est le nombre de pixels qui la compose. Modifier le code afin de calculer la définition de l'image.


2-Modification des pixels de l'image

En python, le pixel de coordonnée (0, 0) est en haut à gauche.

Description des lignes du programme ci-dessus :

  • Ligne 1 : Importe la bibliothèque PIL (ou Pillow) permettant de traiter les images.
  • Ligne 2 : Ouvre le fichier image "couleur.png" et l'affecte à la variable img.
  • Ligne 3 : Extraction des valeurs des trois composantes du pixel (0, 0) soit le pixel de la 1re colonne et de la 1re ligne.
  • Ligne 4 : Affiche le résultat dans la console.


couleur.png

image de 30x30 pixels

À vous de jouer :

  1. Vérifier que le pixel de coordonnée (0, 0) est bien en haut à gauche.
  2. Modifier le code afin de retrouver le code RVB des 5 autres zones de couleurs de l'image.

Description des lignes du programme ci-dessus :

  • Ligne 4 : Création d'une image en mode RVB (RGB en anglais) de 200 pixels de largeur et 100 pixels de hauteur.
  • Ligne 7 : Pour y allant de 0 à 99 (=hauteur). C'est une boucle FOR permettant un balayage de toutes les lignes de l'image.
  • Ligne 8 : Pour x allant de 0 à 199 (=largeur). C'est une boucle FOR permettant un balayage de toutes les colonnes de l'image.
  • Les deux boucles sont imbriquées l'une dans l'autre permettant de balayer tous les pixels de l'image.
  • Ligne 9 : Coloration du pixel de coordonnée (x, y) avec les valeurs RVB (255, 0, 0).

À vous de jouer :

  1. Modifier le code pour créer une image bleue.
  2. Modifier le code pour créer une image jaune.
  3. Modifier le code pour colorer en rouge seulement la moitié supérieure de l'image. (Pour obtenir la division entière d'un nombre en python, il faut utiliser le double-slash //)

3-Application : Conversion en niveaux de gris

Une technique pour convertir une image en niveau de gris est de réaliser la moyenne des trois composantes RVB du pixel et d'affecter cette moyenne aux trois composantes RVB.

Attention : Les composantes doivent être des nombres entiers. Pour cela il y a toujours le double-slash // pour réaliser la division entière ou bien la fonction int() qui renvoie la partie entière de ce qui lui ait donné en argument.

À vous de jouer :

  1. Modifier les lignes 7, 8 et 9 du code ci-dessous afin de convertir l'image colorée en image en niveau de gris.
  2. Modifier les lignes 7, 8 et 9 du code ci-dessous pour réaliser d'autres effets sur l'image.

4-Application : Presque comme Snapchat !

Pour faire presque comme Snapchat, programmer son propre filtre Snapchat permettant d'ajouter une auréole sur la tête du chat.

Pour cela il faut :

  • ouvrir les deux images "aureole.jpg" et "chat.jpg". Ces deux images ont la même définition de 300x366 pixels.
  • copier les 61 premières lignes de pixels de l'image aureole.jpg (soit 1/6 de sa hauteur) sur l'image chat.jpg.

Remarque : Il est possible de visualiser les fichiers mis à disposition dans l'éditeur ci-dessous en cliquant sur l'icône "Files" située en haut à gauche.


À vous de jouer ici: