Bonjour à tous,
Dans le cadre d'un exercice pour l'IUT je dois réaliser un algorithme qui dessine les contours d'une image données.
J'ai déjà mis en place un algo qui "marchote" mais trop imparfait pour m'être satisfaisant.
Voilà le principe général de celui-ci:
dans un premier temps je stock la valeur de la couleur du premier pixel et je parcours tous les autres par la suite.
Je compare cette couleur à celle du pixel que je suis en train de lire et si ce n'est pas la même couleur alors je passe sa couleur à noire.
Mais le seul hic c'est que dès lors qu'un pixel foire au milieu d'un aplat de couleur j'ai le droit à un petit point noire.
Voilà le code C:
Ps: Un fichier PGM est de structure suivante:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19 void contour2(Image *pIm, Image *pJm) { int i, couleur; creerImg(pJm, pIm->nblgn, pIm->nbcol, pIm->nbcoul, 255); couleur = pIm->points[0]; for(i = 1; i < (pJm->nbcol * pJm->nblgn); i++) { if(pIm->points[i] == couleur) pJm->points[i] = 255; else pJm->points[i] = 0; couleur = pIm->points[i]; } }
première ligne: en-tête avec "P5 nbligne nbcolonne nbcouleur"
puis les pixels les uns à la suites des autres
Si jamais il vous faut plus d'information je me ferais une joie de vous les apporter.
Partager