Modifications entre les versions 5 et 7 (s'étendant sur 2 versions)
Version 5 à la date du 2013-12-11 07:39:33
Taille: 2142
Éditeur: 178
Commentaire:
Version 7 à la date du 2013-12-11 12:47:30
Taille: 2406
Éditeur: 178
Commentaire:
Texte supprimé. Texte ajouté.
Ligne 9: Ligne 9:
 * [[attachment:pnm.py]], une implémentation de toutes les opérations sur ce format que l'on évoque dans la suite (mais le but est de le faire vous-mêmes).  * [[attachment:pnm_v2.py]], une implémentation de toutes les opérations sur ce format que l'on évoque dans la suite (mais le but est de le faire vous-mêmes).
Ligne 11: Ligne 11:
Vous pouvez utiliser les fonctions définies dans ce fichier en commençant par importer le module: Vous pouvez utiliser les fonctions définies dans ce fichier en le renommant '''pnm.py''' et en commençant par importer le module:
Ligne 16: Ligne 16:
Ligne 36: Ligne 37:

Le programme suivant doit afficher l'image d'exemple, en supposant que les deux fichiers sont dans le même répertoire:

{{{#!highlight python
import pnm
i = pnm.lire_pnm("pinklady-ascii.ppm")
pnm.afficher_ppm(i)
}}}

TP : structures de données et images

C’est la séance 1B2 de la formation 2013-2014.

Il s'agit de manipuler à la main (en Python) des structures de données pour représenter des images. On va suivre le format d'image PNM, qui est assez simple pour tout faire soi-même.

Pour référence:

  • pinklady-ascii.ppm, un fichier d'exemple;

  • pnm_v2.py, une implémentation de toutes les opérations sur ce format que l'on évoque dans la suite (mais le but est de le faire vous-mêmes).

Vous pouvez utiliser les fonctions définies dans ce fichier en le renommant pnm.py et en commençant par importer le module:

   1 import pnm

Structure de donnée utilisée

On va tout représenter avec les structures de données élémentaires de Python: nombres, chaînes de caractères, listes, dictionnaires.

Une image est représentée par un dictionnaire contenant les entrées suivantes:

  • format est une chaîne de caractères, dont la valeur peut être

    • couleur pour une image en couleurs (on utilisera principalement ce cas-là)

    • gris pour une image en niveaux de gris

    • bitmap pour une image en noir et blanc

  • largeur est un entier qui indique le nombre de pixels en largeur

  • hauteur est un entier qui indique le nombre de pixels en hauteur

  • donnees est une liste contenant les valeurs des pixels, en fonction du format

    • pour couleur, chaque pixel correspond à 3 valeurs, pour les trois composantes rouge, vert, bleu; le pixel de coordonnées (x,y) commence donc à l'indice (largeur×y+x)×3

    • pour gris, chaque pixel correspond à une valeur qui est son niveau de gris

    • pour bitmap, huit pixels consécutifs correspondent à une valeur du tableau (un bit par pixel)

Le module pnm fournit en particulier les fonctions suivantes:

  • pnm.lire_pnm(nom_fichier) lit un fichier et renvoie la structure de données associée

  • pnm.afficher_ppm(image) affiche une image (supposée être au format couleur) dans une fenêtre Tkinter

Le programme suivant doit afficher l'image d'exemple, en supposant que les deux fichiers sont dans le même répertoire:

   1 import pnm
   2 i = pnm.lire_pnm("pinklady-ascii.ppm")
   3 pnm.afficher_ppm(i)

WikISN: TP format PNM (dernière édition le 2016-03-01 13:25:51 par LionelVaux)