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 :

Récupérer la composante grise d'une image (valeur négative ?)


Sujet :

OpenCV

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    61
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 61
    Par défaut Récupérer la composante grise d'une image (valeur négative ?)
    Bonjour,
    j'ai un petit souci (plutôt un gros en fait :-) ) lorsque je souhaite accéder à la valeur d'un pixel de mon image je n'obtiens pas sa valeur entre 0-255 mais des valeurs négatives? Je n'arrive pas à comprendre comment cela est possible vu que j'utilise seulement les fonctions de openCV... J'ai besoin de pouvoir accéder à la vrai valeur du pixel pour comparer mon code C++ avec le résultat d'un calcul matlab....
    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
     
    // j'ai une Iplimage de base img en RVB (plutot BGR comme c'est une IPLimage)
    IplImage* srcG = cvCreateImage(cvGetSize(img),IPL_DEPTH_8U,1); // création d'une image avec 1 canal
    cvCvtColor(img,srcG ,CV_BGR2GRAY); // conversion de l'image en niveaux de gris
     
    // voila ensuite je fait seulement un affichage dans la console avec :
    for(int j=0; j<srcG->height; j++) {
        for(int i=0; i<srcG->width; i++) {
            cout << ((srcG->imageData + srcG->widthStep*j)[i*1]) << " ";
        }
        cout << endl;
    }
    Voila le résultat (seulement une partie car l'image est grande :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    -70 -73 -69 -65 -65 -67...
    -58 -57 -56 -54 -46 -40...
    -73 -86 -68 -52 -48 -62...
    ...
    Est-ce qu'il faut y ajouter 128 pour avoir la bonne valeur ? Cela me parait étrange car dans la doc de OpenCV il spécifie que la formule utilisée pour obtenir la valeur grise est : RGB->Gray: Y<-0.299*R + 0.587*G + 0.114*B

    Avez-vous des idées? merci beaucoup!
    a+

  2. #2
    Membre confirmé Avatar de Topeur
    Profil pro
    Inscrit en
    Février 2008
    Messages
    91
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 91
    Par défaut
    Bonjour k3ops,

    J'ai travaillé dernièrement avec openCV et j'ai rencontré les même soucis que toi. C'est assez difficile de comprendre pourquoi il y a des chiffres négatifs mais je pense que tout n'est qu'une histoire de représentation.

    En non-signée, les valeurs sont comprises entre 0 et 255
    Mais en signé, elles sont comprises entre -128 et 127 (0 etant le noir, et -1 le blanc).
    Du coup, en mémoire, il n'y a aucune difference de stockage de l'information, en revanche, c'est ton impression des données qui fait la difference. Force les valeurs a être affiché en non-signée (unsigned) et tu devrait trouver le résultat que tu désires.

    Passe des images entièrement blanche ou noire pour tester les valeurs retournées.
    j'espere que j'aurai pu t'aider ou t'aiguiller

    Bon courage

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    61
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 61
    Par défaut
    ok je vais voir ca merci de tes explications

  4. #4
    Invité de passage
    Inscrit en
    Janvier 2012
    Messages
    1
    Détails du profil
    Informations forums :
    Inscription : Janvier 2012
    Messages : 1
    Par défaut valeurs rgb négatives
    mm moi je tombe dans le mm problème, et j'ai essayer le "unsigned" mais il me retourne des valeurs vraiment énormes 412356 et avec le "int" et une image blanche il retourne -1.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 3
    Dernier message: 16/01/2008, 07h12
  2. Récupérer les variantes RVB d'une image
    Par hsouna dans le forum Images
    Réponses: 9
    Dernier message: 06/07/2006, 20h10
  3. récupérer la taille totale d'une image avant chargement
    Par sorenson dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 25/06/2006, 14h50
  4. Réponses: 2
    Dernier message: 26/10/2004, 17h42

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