Bonjour,
Je cherche à l'aide d'OpenCV à isoler les pixels de couleur d'une image qui est presque partout en noir et blanc (sauf quelques pixels...)
Je sais qu'elle n'est pas vraiment en noir et blanc car elle est codé sur 3 canaux (sinon j'aurai pas de couleurs). Mais comment faire la distinction entre les pixels gris et les pixels de couleurs.
J'ai regardé sur Gimp, quand on se place sur l'image à un endroit ou il y a du gris, les trois valeurs RGB sont identiques, alors que lorsqu'on est sur de la couleur les valeurs RGB sont différentes.
Pour être plus claire Gimp me dit : sur un pixel gris : R=120 G=120 B=120 et sur un pixel de couleur : R=200 G=110 B=50.
Alors je me suis dit dès que j'ai une valeur différente pour les RGB je sais que c'est de la couleur, j'ai donc fais ce petit code mais ça ne marche pas...
Ah oui j'ai oublié de dire que je cherche à isoler ce pixel que sur la première ligne de mon image c'est pour ca que j'ai qu'une boucle for...
Il ne trouve jamais le bon pixel...
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
27
28
29
30
31
32
33
34
35
36
37
38
39
40 int main( int argc, char** argv ) { pinnacle=cvLoadImage("essai.jpg",1); int axeX=0; int axeY=0; int i,j; CvScalar s; for(j=0;j<pinnacle->height;j++){ s=cvGet2D(pinnacle,j,0); printf("RGB = %f %f %f\n ",s.val[0],s.val[1],s.val[2]); if (s.val[0]!=s.val[1] && s.val[1]!=s.val[2] && s.val[0]!=s.val[2] ){ axeX=j; axeY=0; printf("axeX=%d axeY=%d\n",axeX,axeY); j=pinnacle->height-1; } } cvNamedWindow("correction",CV_WINDOW_AUTOSIZE); cvShowImage("correction",pinnacle); cvReleaseImage(&pinnacle); cvWaitKey(0); return 0; }
Des idées??
Merci![]()
Partager