Problème de mémoire avec cvCreateImage (grosse image)
Bonjour,
J'ai un petit problème de mémoire. Voici mon soucis :
Je travaille sur un gros projet j'ai localisé mon problème mais je n'arrive toujours pas à le résoudre.
Je travaille avec de grosses images (1024*50000).
Donc je dois convertir deux images (Ir et Vis) en RGB avec cette fonction :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29
| IplImage* COpenCvProcess::convertToRGB(IplImage *image)
{
try
{
cvSetErrMode(CV_ErrModeParent);
// Déjà en couleurs
if((image->nChannels == 3) || (image->nChannels == 4))
return image;
// Conversion
else
{
IplImage *tmp = cvCreateImage(cvSize(image->width, image->height), IPL_DEPTH_8U, 3);
cvCvtColor(image, tmp, CV_GRAY2RGB);
// Suppression de l'ancienne image
destroyIpl(&image);
// Reassignation
return tmp;
}
}
catch(std::exception &e)
{
qWarning() << e.what();
return 0;
}
} |
Lors de la première "passe" Ir il n'y a aucun soucis. J'ai en entré une image (Gray) de taille 1024*50000 convertie grâce à cette fonction en image RGB de taille identique.
Par contre lors de la seconde "passe" Vis lors du cvCreateImage() OpenCv m'envoie une erreur : Out of Memory (Insufficient memory) cvAlloc.
Je ne sais pas trop où viser, avez vous des indices?
Merci d'avance,