2016-07-04 16 views
0

Ich arbeite an Windows 8 mit OpenCV 2.4.13 und MinGW 4.9.
Ich schrieb ein einfaches und kleines opencv-Programm, um zu überprüfen, ob alles richtig installiert wurde. Im Folgenden finden Sie den Code ein:OpenCV-Programm kompiliert, läuft aber nicht

#include <opencv2/highgui/highgui.hpp> 

int main() { 
    printf("in main\n"); 
    for (int i = 0; i<10; i++) { 
     printf("here\n"); 
     IplImage * image = cvLoadImage("C:/{...}/test.jpg"); 
     cvReleaseImage(&image); 
    } 
    return 0; 
} 

ich es mit dem folgenden Befehl an der Eingabeaufforderung zusammengestellt:

g++ -o test test.cpp -LC:\{...}\opencv\build\x64\vc11\lib -lopencv_core2413 -lopencv_highgui2413 -IC:\{...}\opencv\build\include 

{...} ist der Pfad zu dem angegebenen Ordner/Datei.

Dieser Befehl wird ordnungsgemäß ausgeführt und die Kompilierung ist ohne Fehler erfolgreich. Allerdings, wenn ich laufen mit:

test 

in main und ein here wird gedruckt nach dem ich die Fehlermeldung als ‚test.exe funktioniert nicht mehr. Windows sucht nach einer Lösung.

Was alles, was ich habe versucht:

  1. Für die Installation von OpenCV, die heruntergeladene opencv ausführbare Datei lief (die alle Dateien extrahiert) und hinzugefügt, um die Systemvariable OPENCV_DIR und bearbeitet das System PATH für die Lage von DLLs (die resident in% OPENCV_DIR% \ bin) wie folgt:
    http://docs.opencv.org/2.4/doc/tutorials/introduction/windows_install/windows_install.html#installation-by-using-the-pre-built-libraries
  2. Versucht, die erforderlichen DLLs im selben Verzeichnis wie die EXE-Datei hinzuzufügen.
  3. Versucht, die ganze Sache aus VC12-Verzeichnis zu tun.
  4. Nachdem die Fehlermeldung angezeigt wird, gibt es eine Option zum Debuggen. Wenn Sie dies drücken, öffnet sich der Just In Time Debugger und sagt 'Eine unbehandelte win32-Ausnahme ist in test.exe aufgetreten'. Ich googelte dies und versuchte, den Registrierungsschlüssel wie hier gerichtet zu überprüfen
    https://support.microsoft.com/en-us/kb/811191
    aber es war bereits richtig eingestellt. Also gab es für mich nichts zu ändern.

Nichts funktioniert für mich überhaupt. Bitte lassen Sie mich wissen, wenn weitere Informationen benötigt werden. Ich suche verzweifelt nach einer Lösung dafür.

+1

Sind Sie sicher, dass es 'cvReleaseImage (& image);' und nicht 'cvReleaseImage (image);'? Was ist der Wert von image? Hast du vielleicht ein "nullptr" bekommen, weil das Bild nicht gefunden oder geladen wurde? – nwp

+0

@nwp Ich habe gerade versucht, eine 'if..else..' mit printfs hinzuzufügen, um zu prüfen, ob der Bildzeiger 'NULL' ist, er stürzt bei' cvLoadImage' ab, nehme ich an. Nichts nach dem Ausdruck der 'cvLoadImage'-Zeile. –

Antwort

0

Für diejenigen, die möglicherweise das gleiche Problem auftreten, kompilierte ich das Programm mit OpenCV dynamische (.dll) Bibliotheken anstelle der .lib Dateien und es lief gerade gut zur Laufzeit aus irgendeinem Grund.

Verwandte Themen