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 :
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
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; }
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
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... ...
Avez-vous des idées? merci beaucoup!
a+
Partager