Image

EZ.image

Pour la représentation machine d'une image je vous reporte au cours fait dessus.

EZ permet de de créer ou de modifier des images, pour cela il faut utiliser des variables d'un type nouveau : une pygame.Surface (mais que je vais appeler par la suite une EZ.image). La taille mémoire d'une image est variable (elle dépend de sa taille et du niveau de couleurs) et utiliser des variables de type EZ.images est (un peu) moins simple que d'utiliser des variables de type int par exemple. Une chose à faire est de réserver la place mémoire et définir les attributs de l'image, pour cela on utilise une fonction (les fonctions qui vont ce genre de choses sont appelées constructeur).

Exemple

			

Si on veut sauvegarder l'image, il faut utiliser EZ.sauvegarde_image(nom_de_l'image,nom_du_chemin).

Exemple

		

On peut sauvegarder en JPEG, en PNG et en BMP mais pas en PPM.

Modifier une image

Pour modifier une image on peut utiliser les même fonctions que les fonctions de dessins, il faut juste ajouter le nom de l'image à la fin.

Exemple

			
		
Exemple

On peut utiliser les EZ_images pour les coller à l'écran où sur d'autres EZ_images.


		

Récupérer un pixel.

Pour récupérer la dimension d'une image (util si on la charge) on utilise EZ.dimension(nom_EZ_image) Pour récupérer un pixel de couleurs, on utilise EZ.recupere_couleur_image(nom_EZ_image,position_horizontale,position_verticale) de la façon suivante :

Exemple

		
		

Celà nous permet de vérifier que le blanc de la robe n'est pas blanc mais bleu !

Exemple de traitement de l'image.

Nous allons essayer de trouver les contours d'une image. Comment identifier les contours ? En identifiant les changements de couleurs.

On va donc parcourir tous pixels de l'image et comparer les couleurs avec les couleurs du pixel voisin (ici celui juste à droite mais on peut faire mieux), si il y a une trop grande différence de couleurs alors on atteint un contour.

Exemple

		

Améliorer la fonction en vérifiant les couleurs de façon verticale en plus.

Exercices
  1. En partant de la tableau 2 dimensions suivant construire l'image suivante :
  2. En partant de tableaux vides et en utilisant que append faire le dessin :
  3. Telecharger le fichier suivant dans votre dossier et ne pas l'ouvrir ! Puis lancer :
  4. 
    		
    1. Donnez la commande qui permet de savoir le nombre de lignes de tab.
    2. Donnez la commande qui permet de savoir le nombre de colonnes de tab.
    3. Faire l'image stockée dans tab sur un papier.
  5. Faire une fonction rouge(nom_image), qui prend une EZ_image et qui retourne une EZ_image qui correspond à la transformation conservant que la composante rouge de l'image d'origine.
  6. Faire une fonction noir_blanc(nom_image), qui prend une EZ_image et qui retourne une EZ_image qui correspond à la transformation en noire et blanc de l'image d'origine.
  7. Faire une fonction inverse(nom_image), qui prend une EZ_image et qui retourne une EZ_image qui correspond à la transformation inversant le haut et le bas.
  8. Faire une fonction rotation(nom_image), qui prend une EZ_image et qui retourne une EZ_image qui correspond à la transformation donnant la rotation à 90° de l'image.
  9. Faire une fonction qui va assombrir ou éclaircir une image.
  10. Faire une fonction decoupe qui va sélectionner une partie de l'image.
  11. Faire une fonction vieux(nom_image,ponderation,fond = "fond.jpg"), qui prend une EZ_image et qui pour chaque pixel de l'image va faire la moyenne pondérée de la sa couleur avec celui de l'image fond.jpg qui correspond. Pour avoir un résultat "image viellie" l'image de fond doit être sépia-jaune-sale par exemple : telecharger cette image de fond.

  12. Faire une fonction flou(nom_image), qui prend une EZ_image et qui retourne une EZ_image qui correspond à la transformation floutant l'image d'origine, pour faire celà on peut pour un pixel faire la moyenne des couleurs du pixel et des pixels voisins (attention aux pixels du bord).
  13. Faire une fonction niveau_flou(nom_image,n), qui prend une EZ_image et qui retourne une EZ_image qui correspond à l'application de n fois la fonction précédente (par défaut n=1). Attention les temps de calculs sont proportionnelles à n et peuvent être important
Solution ex 1
Solution ex 2
Solution ex 3
Solution ex 4
Solution ex 5
Solution ex 6 et 7 et en bonus une meilleure fonction de contour qui prend l'image d'origine moins l'image floutée