Bonsoir à tous,
je suis nouveau sur ce forum.
Je vous expose mon problème, je tiens à signaler que je débute dans l'utilisation de la librairie OpenCV.
Je récupère un image depuis ma webcam, je souhaite avoir une image binaire qui correspond à la couleur rouge. Je m'explique, j'ai une image avec 3 disques un rouge, un bleu et un vert. Le but est d'avoir dans l'image binaire le disque rouge en blanc.
Donc pour ce faire, je convertie mon image de webcam dans l'espace colorimétrie HSV pour que la luminosité ne me gêne pas. Dans l'img_hsv, je parcoure l'img_hsv et pour tous les pixels donc la valeur de H est comprise entre 0-60, qui correspond à la couleur rouge. (Je ne suis pas sur de ces valeurs). Je n'arrive pas à voir ou est mon pb, j'ai une image binaire mais qui ne correspond pas à ce que je recherche. merci d'avance. Voici mon code :
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
 
IplImage* Camera::Binary(IplImage* img, int channel, int color) {
 
   IplImage* img_bin;
   CvScalar pixel;
 
   img_bin = cvCreateImage(cvGetSize(img),8,1);
 
   /* image full black */
   cvSet(img_bin, cvScalar(0,0,0));
 
   for (int i = 0; i < img->width; i++) {
      for (int j = 0; j < img->height; j++) {
 
         pixel = cvGet2D(img, j, i);
         if (pixel.val[0] > 0 && pixel.val[0]<60) {
            cvSet2D(img_bin, j, i, cvScalar(255,255));
         }
 
      }
   }
   return img_bin;
}
 
IplImage* Camera::RGB2HSV(IplImage* img) {
   IplImage* img_hsv;
   img_hsv = cvCreateImage(cvGetSize(img),8,3);
   cvCvtColor(img, img_hsv, CV_RGB2HSV);
   /*cvCvtColor(img, img_hsv, CV_BGR2HSV);*/
   return img_hsv;
}