Ich versuche, über einige Verzeichnisse mit etwa 3000 Bildern zu iterieren. Ich lade das Bild. Wenn das Bild geladen ist, lasse ich es los. Das ist das kleinste Programm, das ich schreiben kann, um den Fehler zu reproduzieren.Problem mit der Iteration über viele Bilder in OpenCv mit Mac OS
Nach dem Laden und Freigeben von 124 Bildern stoppt das Programm das Laden von Bildern. Ich denke, dies ist ein Speicher Problem, aber ich verstehe nicht, was genau bewirkt, dass das Programm aufhört, Bilder zu laden.
Ich verwende OpenCV auf meinem Mac. Ich weiß nicht, wie genau ich herausfinden kann, welche Version ich verwende.
Hier ist der Code von meinem Projekt.
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;
}
Diese Methode für jedes Bild aufgerufen wird, in den directorys ich Iterieren durch. Nach 124 Bildern wird der if (img) Teil zu false ausgewertet und der else Zweig wird ausgeführt. Wenn ich später versuche, Bilder von anderen Teilen des Programms zu laden, werden sie auch nicht geladen.
Bearbeiten es ist kein Speicherproblem. Mac Os Standard max offene Dateien ist 256 nach dem Ändern von 512 kann ich 251 Bilder öffnen. Offenbar schließt OpenCV die Bilddateien nach dem Laden nicht.
Heh, das ist schade :(Gut zu wissen, dass du nicht verrückt bist, huh? – GManNickG
Ja fühlt sich gut an zu sehen, dass der Fehler nicht in meinem Code war :) – Janusz