Bonjour,
J'ai un petit problème avec la fonction ConvertScale d'OpenCV (j'utilise la version 2.0).
En effet, je récupére une image, qui peut être de 8, 16 ou 32 bits, je lui applique grayscale (donc l'image passe obligatoirement en 8 bits) puis j'utilise FindStereoCorrespondenceBM pour trouver la disparité de deux images, ce qui me retourne une image en 16 bits signés.
Je veux ensuite passé de mon image en 16 bits, au format utilisé par l'image source (8, 16 ou 32), mais j'eprouve des difficultés à comprendre la fonction ConvertScale, en particulier l'attribut scalefactor.
Un exemple du code :
Les variables disparity sont bien évidemment des IplImage. Si je ne suis pas assez clair ou que vous manquez d'informations, faites-le moi savoir.
disparityU = cvCreateImage(cvSize((int)(width), (int)(height)), IPL_DEPTH_16U, 1);
cvConvertScale(disparity, disparityU, 1, PF_MAX_CHAN16);
dispSrc = cvCreateImage(cvSize((int)(width), (int)(height)), bitdepth, 1);
switch(bitdepth){
case 8 :
cvConvertScale(disparityU, dispSrc, 1/256.0, 0);
break;
case 16 :
cvConvertScale(disparityU, dispSrc, 1, 0);
break;
case 32 :
cvConvertScale(disparityU, dispSrc, 256.0, 0);
break;
default :
break;
}
Merci de votre aide !
Partager