bonjour,


j'ai un problème de fuite mémoire pour cvGet2D.
je suis aller un peut partout sur le net mais je n'ai pas trouver la solution mis a part qu'il y avait bien des problème de fuite mémoire sur la fonction CvGet2D.
je cherche donc à la contourner.

voila ma fonction fonction suivante:

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
for(i = 0; i < abs(Xx2-Xx1+1); i++)
{
for(j = 0; j < abs(Yy2-Yy1+1); j++)
{
int r = cvGet2D(img2, j, i).val[2];
int g = cvGet2D(img2, j, i).val[1];
int b = cvGet2D(img2, j, i).val[0];
CvScalar pixel = cvScalar(b, g, r);
cvSet2D(img4, j, i, pixel);
}
}
j'ai tenté de passer avec un seul cvGet2D comme ça:

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
for(i = 0; i < abs(Xx2-Xx1+1); i++)
{
for(j = 0; j < abs(Yy2-Yy1+1); j++)
{
CvScalar c= cvGet2D(img2, j, i);
int r = c.val[2];
int g = c.val[1];
int b = c.val[0];
CvScalar pixel = cvScalar(b, g, r);
cvSet2D(img4, j, i, pixel);
}
}
effectivement j'ai moins de perte mémoire donc mon programme tourne plus longtemps mais il plante quand même au bout de 30 secondes!!!!!


comment puis-je faire pour ne pas utiliser cvGet2D?
ou pour éviter la fuite mémoire?

merci.