Bonjour
je suis entrain de réaliser un bout de programme où le but est d'effectuer un seuillage sur une image en niveau de gris.
Pour cela j'ai fait une image en 10*10 pour voir plus facilement les résultats de mon prog.
Mon prog fait la chose suivante :
J'ai une première image , je teste les intensités de mes 100 pixels , je recopie les pixels et leur intensité dans une autre image mais si un pixel a une intensité inférieure à 230 , l'intensité du pixel correspondant dans la deuxième image vaut 0.
En gros sur ma deuxième image , les pixels dont l'intensité est supérieure à 230 restent identiques , les autres sont noirs .
Donc ça marche sauf que quand j'affiche les deux images il y a un décalage :
Mon code :
Si on en croit le printf, le changement de valeur a bien lieu mais c'est pendant l'affichage que ça merde ... si qqun a une idée !
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
20
21
22
23
24
25
26 CvScalar pix,pix2,pix3; for(i=0;i<img2->width;i++) { for(j=0; j<img2->height ; j++) { pix=cvGet2D(img2,i,j); cvSet2D(img3,i,j,pix2); if(pix.val[0] < 230) { pix2.val[0] = 0 ; } else { pix2.val[0] = pix.val[0]; } printf("intensite pixel n%d : %lf %lf\n",10 * i + j+1,pix.val[0],pix2.val[0]); } } cvShowImage("f1", img2); cvShowImage("f3",img3);
Merci
Partager