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:
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:
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+