TP : structures de données et images

Un exemple de solution aux exercices se trouve sur la page /solution, mais vous avez intérêt à chercher vous-mêmes, bien entendu!

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:

Tous ces fichiers se trouvent dans l’archive fichiers_tp2.2.zip, que vous devez télécharger et décompresser dans un dossier (par exemple mon_projet) sur votre machine.

Vous pouvez ensuite lancer le script pnm_v2.py (par exemple en ouvrant le fichier avec IDLE et en appuyant sur F5). Normalement, un fichier sortie.pgm est créé.

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:

Le module pnm fournit en particulier les fonctions suivantes:

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)

Exercice 1: rotation de 180°

Écrire une fonction retourner qui prend en argument une image décrite selon la structure ci-dessus et renvoie une nouvelle image qui est la même mais retournée à 180 degrés. On pourra donc voir la pomme retournée en faisant:

   1 import pnm
   2 avant = pnm.lire_pnm("pinklady-ascii.ppm")
   3 apres = retourner(avant)
   4 pnm.afficher_ppm(apres)

Exercice 2: écriture au format PPM ASCII

Écrire une fonction ecrire_ascii qui prend en argument une image et un nom de fichier et produit un fichier au format PPM textuel pour cette image. Pour tester, vous pouvez vérifier que ceci affiche la pomme:

   1 import pnm
   2 avant = pnm.lire_pnm("pinklady-ascii.ppm")
   3 ecrire_ascii(avant, "test.ppm")
   4 apres = pnm.lire_pnm("test.ppm")
   5 pnm.afficher_ppm(apres)

Pour aller plus loin

Une fois que vous avez résolu les deux exercices précédents, plusieurs suggestions:

WikISN: TP format PNM (last edited 2016-03-01 13:25:51 by LionelVaux)