Bonjour, j'utilise openCV pour additionner 10 images
j'utilise cvAdd mais le résultat est bizarre car les pixels de la somme d'images sont tous à 255
y a t 'il une autre fonction pour additionner des images?
Version imprimable
Bonjour, j'utilise openCV pour additionner 10 images
j'utilise cvAdd mais le résultat est bizarre car les pixels de la somme d'images sont tous à 255
y a t 'il une autre fonction pour additionner des images?
Salut,
la fonction cvAdd additionne bien les images mais reste limité au format d'origine, a priori IPL_DEPTH_8U (soit 255). Pour additionner au delà, il est possible de convertir d'abord en IPL_DEPTH_32F. Jette un oeil ci-dessous :
//image d'origine imgU8 de type IplImage*
int Scale=1;
int Shift=0;
CvSize SzU8;
SzU8.width = imgU8->width;
SzU8.height = imgU8->height;
IplImage* imgF32 = cvCreateImage(SzU8, IPL_DEPTH_32F , imgU8->nChannels);
cvConvertScale(imgU8,imgF32,Scale,Shift);
En espérant que ça t'aidera,
A+
il y a aussi cvAcc qui te permet d'additionner les images deux à deux.
le résultat doit être codé sur 32 bits, puis convertis en 8 bits.
et si tu divises pas par le nombre d'image, tu auras toujours tes saturations paske 255+12 = 255 à cause du dépassement de capacité.
IplImage* moyenne = cvCreateImage(cvGetSize(img), 32, 1);
// moyenne = 32 bits
IplImage* resultat8bits = cvCreateImage(cvGetSize(img), 8, 1);
cvZero(moyenne);
//sommation : on suppose que le tableau d'images buf contient tes 10 images
for(int i = 0; i < N; i++ )
cvAcc( buf[i], moyenne);
// buf[i] = 8 bits
// conversion 32 bits->8 bits et mise à l'échelle
cvConvertScale( moyenne, resultat8bits, 1./N, 0);
cvReleaseImage(&moyenne);
:lol: