96 | | = Etape 4 : = |
| 96 | Cette troisième étape consiste à écrire un parseur élémentaire utilisant les fonctions fgets() et sscanf(). |
| 97 | Vous pouvez vous inspirez de l'exemple |
| 98 | |
| 99 | Le fichier de commandes contient une commande par ligne. |
| 100 | * X : symétrie suivant x (x devient -x) |
| 101 | * Y : symétrie suivant y (y devient -y) |
| 102 | * P : rotation positive de 90° |
| 103 | * M : rotation négative de 90° |
| 104 | * S n : seuillage (tout pixel de valeur supérieure à n prend la valeur 255. Tout pixel de valeur inférieure ou égale à n devient 0) |
| 105 | * F C00 C10 C20 C01 C11 C21 C02 C02 C12 C22 produit de convolution avec une matrice 3*3 |
| 106 | |
| 107 | Voici un exemple de fichier de commandes: |
| 108 | {{{ |
| 109 | # une ligne commencant par un # est un comentaire |
| 110 | X |
| 111 | Y |
| 112 | P |
| 113 | M |
| 114 | S 12 |
| 115 | R 45 |
| 116 | F 1 -1 1 2 10 2 1 -1 1 |
| 117 | }}} |
| 118 | Ecrivez le fichier operate.C (ainsi que le fichier associé operate.h), qui contient la fonction operate(). |
| 119 | Cette fonction prend en entrée une image définie par un pointeur sur une structure de donnée gmap. Elle applique séquenciellement les transformations définies dans le fichier de commandes, et renvoie un pointeur sur la structure de donnée gmap contenant l'image résultante. |
| 120 | {{{ |
| 121 | gmap *operate(FILE *commande, gmap *in); |
| 122 | }}} |
| 123 | |
| 124 | = Etape 4 : Fonctions de traitement de l'image = |