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 : Sélectionner tout - Visualiser dans une fenêtre à part
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,