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?
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);
![]()
Partager