Modifications entre les versions 4 et 6 (s'étendant sur 2 versions)
Version 4 à la date du 2013-12-11 07:33:08
Taille: 1394
Éditeur: 178
Commentaire:
Version 6 à la date du 2013-12-11 12:41:50
Taille: 2371
Éditeur: 178
Commentaire:
Texte supprimé. Texte ajouté.
Ligne 16: Ligne 16:
Ligne 27: Ligne 28:
 * '''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:

{{{#!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.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 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)