Warum OpenCV ablehnen cvLoadImage ( „string.ext“), aber cvLoadImage (argv [1]) annehmen?

StackOverflow https://stackoverflow.com/questions/445295

  •  22-07-2019
  •  | 
  •  

Frage

#include "cv.h"
#include "highgui.h"
#include <stdio.h>


int main(int argc, char* argv[]){
    cvNamedWindow("Window1", CV_WINDOW_AUTOSIZE);
    IplImage* image = 0;
    ->->image = cvLoadImage(argv[1]);<-<-
    if(!image) printf("Unable to load image!");
    cvShowImage("Window1", image);
    char c = cvWaitKey(0);
    cvReleaseImage(&image);
    cvDestroyWindow("Window1");
    return 0;
}

Wenn ich die angezeigte Linie mit cvLoadImage("247.png") ersetzen erhalte ich ein leeres Fenster und Bild bleibt gleich Null

Wenn ich die exe und geben Sie es laufen 247.png als Argument, es ist nur Dandy. Wenn ich die „247.png“ setzen rechts in den Code und bauen und führen Sie es Visual Studio 2008, scheitert es. Wenn ich über die Eingabeaufforderung erstellen und ausführen, es funktioniert.

Warum ist das? Ich bin ein wenig müde nach vorne zu bewegen, ohne diese nach unten zu bekommen.

War es hilfreich?

Lösung

Unter Ausbau-> Einstellungen-> Konfiguration Eigenschaften-> Debugging gibt es ein Feld „Working Directory“. Stellen Sie, dass auf das Verzeichnis, das Sie in ausführen wollen und das sollte das Problem beheben.

Andere Tipps

Sind Sie sicher, „247.png“ ist im aktuellen Arbeitsverzeichnis, wenn Sie den Namen fest codiert?

Führen Sie das Programm unter so etwas wie Process Monitor zu sehen, was Datei ist wirklich geöffnet wird (oder welche Datei-I / O-Fehler könnte es sein).

Nach dem bearbeiten weiteren Informationen zu der Frage hinzuzufügen (das Problem tritt auf, wenn von VS2008 laufen) dies mit ziemlicher Sicherheit ist Ihr Problem. Das aktuelle Verzeichnis, das VS das Programm unter beginnt, ist nicht das Verzeichnis, das die „247.png“ Datei hat.

Können Sie überprüfen, um zu sehen, was Ihre cwd ist?

Sie können die #include <direct.h> Funktion zu sehen _getcwd und verwenden, was es ist. Das wird wahrscheinlich Sie auf den Täter zeigen.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top