J'essaye d'itérateur sur certains répertoires contenant environ 3000 images. Je charge l'image. Si l'image est chargée, je la relâche. C'est le plus petit programme que je puisse écrire pour reproduire l'erreur. Après le chargement et la libération de 124 images, le programme cesse de charger les images. Je pense que c'est un problème mémoire mais je ne comprends pas ce qui provoque exactement le programme pour arrêter le chargement des images. J'utilise OpenCV sur mon Mac . Je ne sais pas exactement comment je peux comprendre quelle version j'utilise.Problème avec itération sur beaucoup d'images dans OpenCv avec mac os
Voici le code de mon projet.
bool FaceDetectionStrategy::detectFace(std::string imagePath) {
IplImage *img = cvLoadImage(imagePath.c_str(), CV_LOAD_IMAGE_COLOR);
if (img) {
std::cout << "Image loaded " << imagePath << std::endl;
cvReleaseImage(&img);
} else {
std::cout << "Image not loaded " << imagePath << std::endl;
}
return true;
}
Cette méthode est appelée pour chaque image dans les repertoires j'itérer. Après 124 images, la partie if (img) est évaluée à false et la branche else est exécutée. Si j'essaye de charger des images d'autres parties du programme plus tard, elles ne se chargeront pas non plus.
Modifier ce n'est pas un problème de mémoire. Mac OS standard max fichiers ouverts est de 256 après l'avoir changé en 512, je peux ouvrir 251 images. il semble donc que OpenCV ne ferme pas les fichiers image après les avoir chargés.
Hé, c'est dommage :(Bon de savoir que tu n'étais pas fou quand même, hein? – GManNickG
Oui ça fait du bien de voir que l'erreur n'était pas dans mon code :) – Janusz