Visual Studio Opencv Bilddaten auslesen



  • Hallo zusammen,

    ich hoffe mal ich bin hier richtig.
    Seit kurzer Zeit arbeite ich mit Visual Studio 2008 und OpenCV, fange gerade mit den Grundlagen an. Zuvor habe ich Bildverarbeitungsapplikationen in Matlab programmiert.

    Bei einem einfachen Programm um Bilder anzuzeigen unterbricht Visual Studio beim kompilieren und gibt "unbehandelte Ausnahme" aus.

    Das Problem tritt in der Zeile auf, in der ich auf die Daten des IplImages zugreifen möchte ( also width, height, channels etc...) Unter der Variable img, die ich dem IplImage zugewiesen habe, stehen im Debugger auch keine Werte bzw. steht dort, dass der Ausdruck nicht ausgewertet werden kann.
    Andere Bildformate wie .tiff und .png habe ich schon ausprobiert.

    Hat jemand eine Idee, woran das liegen könnte.

    Wenn ich das jpg Bild in der Konsole übergebe, funktioniert es.

    vielen Dank schon mal...

    #include <cv.h>
    #include <highgui.h>
    
    int main( int argc, char** argv )
    {
    
    	/* data structure for the image */
    
    	IplImage *img = 0;
    
    	/* load the image, use CV_LOAD_IMAGE_GRAYSCALE to load image in grayscale */
    
    	img = cvLoadImage( "scheibe.jpg", CV_LOAD_IMAGE_GRAYSCALE);
    
    	int width = img->width;
    
    	/* create a window */
    
    	cvNamedWindow( "image", CV_WINDOW_AUTOSIZE );
    
    	/* display the image */
    
    	cvShowImage( "image", img );
    
    	/* wait until user press a key */
    
    	cvWaitKey(0);
    
    	/* free memory */
    
    	cvDestroyWindow( "image" );
    	cvReleaseImage( &img );
    
    	return 0;
    
    }
    


  • MacKai schrieb:

    Bei einem einfachen Programm um Bilder anzuzeigen unterbricht Visual Studio beim kompilieren und gibt "unbehandelte Ausnahme" aus.

    Das bezweifle ich. Ausnahmen werden in C++ nicht statisch (=zur Compilezeit) sondern dynamisch (zur laufzeit) gecheckt. Den Fehler solltest du also eigentlich nur beim Ausführen/Debuggen, nicht aber schon beim Compilieren bekommen.

    Das Problem tritt in der Zeile auf, in der ich auf die Daten des IplImages zugreifen möchte ( also width, height, channels etc...) Unter der Variable img, die ich dem IplImage zugewiesen habe, stehen im Debugger auch keine Werte bzw. steht dort, dass der Ausdruck nicht ausgewertet werden kann.

    Du überprüfst nirgendwo, ob das LoadImage erfolgreich war. Vermutlich ist es fehlgeschlagen und img ein Nullpointer oder etwas in der Art. Wie du das prüfen kannst sagt dir die Dokumentation der Bibliothek die du da verwendest.



  • cvLoadImage wird vermutlich einen Nullzeiger zurückgeben, wenn es fehlschlägt. Warum es fehlschlägt, lässt sich vermutlich damit erklären, dass das working directory nicht stimmt bzw. nicht so ist, wie du es gerne hättest. Versuch es doch mal mit einem absoluten Pfad ("C:\\myDir\..." - hier unbedingt den Backslash doppelt notieren => Escapesequenzen).



  • Danke für die schnellen antworten.

    @pumuckl...du hast recht...der Fehler kommt beim Ausführen, nicht beim kompilieren...

    Der Fehler lag tatsächlich am wd.
    Mit dem absoluten Pfad funktioniert alles. Das hatt ich auch schon mal ausprobiert, aber die doppelten slashs nicht eingebaut... 🤡
    Ich habe auch extra letztens das wd abgefragt und das Bild in den angegebenen Ordner gepackt, war aber anscheinend falsch. Das wd ist doch default der Projektordner oder?

    Verwirrend war nur, das die .exe immer funktioniert hat, also das Bild gefunden hat.



  • MacKai schrieb:

    Das wd ist doch default der Projektordner oder?

    Das wd ist der Ordner, in dem die .exe ausgeführt wird. Welcher das beim Debuggen ist, ist Einstellungssache der IDE. (IIRC Projekteinstellungen beim MSVC)



  • Super...jetzt klappt alles...vielen Dank!


Anmelden zum Antworten