IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

OpenCV Discussion :

Isoler un pixel de couleur dans une image noir et blanc


Sujet :

OpenCV

  1. #1
    Membre confirmé Avatar de suzan_
    Profil pro
    Inscrit en
    Juillet 2010
    Messages
    87
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2010
    Messages : 87
    Par défaut Isoler un pixel de couleur dans une image noir et blanc
    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...

    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;
    }
    Il ne trouve jamais le bon pixel...

    Des idées??

    Merci

  2. #2
    Membre averti
    Inscrit en
    Octobre 2007
    Messages
    50
    Détails du profil
    Informations forums :
    Inscription : Octobre 2007
    Messages : 50
    Par défaut
    Est ce que dans ton printf tu arrives a obtenir le moment ou tes composantes n'ont pas la meme valeur ?
    Avec Gimp tu peux meme connaitre la position (j) de ton pixel dans ta ligne, que te donne ton programme pour cette position ?

  3. #3
    Membre confirmé Avatar de suzan_
    Profil pro
    Inscrit en
    Juillet 2010
    Messages
    87
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2010
    Messages : 87
    Par défaut
    Oui mais je me suis rendu compte que mon image vu qu'elle était codé en couleur je peux pas considérer que mon gris, même si c'est du gris, n'est qu'un niveau de gris , les trois canaux RGB ont bien la même valeur en dézoomant sur GIMP, mais des que je zoome sur un pixel gris en particulier, les trois canaux RGB ont des couleurs différentes.
    C'est pour ça qu'il s'arrete tout de suite...

    J'ai plus trop d'idée, est ce que quelqu'un à une idée??

    Il faudrait que dis à mon programme si le code RGB est dans cette gamme de couleur ci : c'est un niveau de gris, si le code RGB a une autre valeur alors c'est une couleur... Mais je sais pas comment identifier le code RGB de la couleur grise clair et grise foncé dans une image à 3 canaux...

  4. #4
    Membre averti
    Inscrit en
    Octobre 2007
    Messages
    50
    Détails du profil
    Informations forums :
    Inscription : Octobre 2007
    Messages : 50
    Par défaut
    a mon avis tu peux essayer de passer dans un autre espace de couleur, pour mieux discriminer la couleur du gris (ex HSV)

  5. #5
    Membre chevronné
    Inscrit en
    Mars 2010
    Messages
    439
    Détails du profil
    Informations forums :
    Inscription : Mars 2010
    Messages : 439
    Par défaut
    dans un code RGB le niveau de gris est représenté par une proportion de RGB semblable soit R=G=B

Discussions similaires

  1. Changer différentes couleurs dans une image
    Par cashmoney dans le forum Flex
    Réponses: 13
    Dernier message: 08/10/2009, 18h06
  2. mesurer la variabilite' de la couleur dans une image
    Par aichaeside dans le forum Images
    Réponses: 4
    Dernier message: 26/05/2009, 01h25
  3. Isoler certains pixels à l'intérieur d'une image
    Par totoc1001 dans le forum Images
    Réponses: 2
    Dernier message: 03/05/2007, 15h30
  4. Couleur dans une image
    Par sandball22 dans le forum Images
    Réponses: 10
    Dernier message: 19/01/2007, 02h24
  5. extraire une image noir et blanc noyé dans de la couleur
    Par gronaze dans le forum Traitement d'images
    Réponses: 6
    Dernier message: 18/07/2006, 18h30

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo