2017-06-22 2 views
1

Ich arbeite direkt aus einem Buch, und kopiert den folgenden Code (im Wesentlichen die OpenCV-Äquivalent von „Hallo Welt“):OpenCV imshow nicht angezeigt Bild in osx

//helloCV.cpp 
#include <opencv2/opencv.hpp> 

int main(int argc, char** argv){ 

     cv::Mat img = cv::imread(argv[1], -1); 
     if (img.empty()) return -1; 

     cv::namedWindow("Example1", cv::WINDOW_AUTOSIZE); 
     cv::imshow("Example1", img); 
     cv::waitKey(0); 
     cv::destroyWindow("Example1"); 

     return 0; 

}//main 

Leider, wenn ich diese laufen Code, erhalte ich ein Fenster mit dem Kopf und nichts drin:

ich vermute, dass ich die Umwelt oder eine verkorkste so, wenn OpenCV installieren, aber Cmake keine Fehler wirft, und der Code läuft wie erwartet, wird bei einem Tastendruck korrekt beendet und alle mit der eklatanten Ausnahme eines fehlenden Fotos.

Irgendwelche Tipps?

Danke!

+1

Es wurden kürzlich einige ähnliche Fragen gepostet, z. https://stackoverflow.com/questions/44639948/image-not-displaying-with-imshow-opencv –

+1

Danke, @ DanMašek! Freut mich zu sehen, dass es nicht nur ich ist; Ich werde heute Abend mit dieser Sache herumspielen und schauen, ob andere Funktionen besser funktionieren und um das Problem herumkommen, das die Imshow zu haben scheint. –

+1

Zugehöriger Fehlerbericht: https://github.com/opencv/opencv/issues/8885 –

Antwort

4

Dank @ DanMašek für die Führung auf diesem, und an alle Leute auf dieser Seite: http://answers.opencv.org/question/160201/video-window-not-loading-frame/

Um es zu wiederholen, was sie gesagt, was für mich gearbeitet war die folgende:

zu Auflösen, suchen Sie die Datei window_cocoa.mm; Wenn es aus der Quelle erstellt wird, wird es in opencv/modules/highgui/src sein.

Ändern Sie die folgenden Schritte aus:

@implementation CVView 
#if defined(__LP64__) 
@synthesize image; 
#else // 32-bit Obj-C does not have automatic synthesize 
@synthesize image = _image; 
#endif 

Um dies:

@implementation CVView 
@synthesize image = _image; 

Machen Sie dasselbe für die CVWindow und CVSlider Implementierungen ac commodate Videos auch.

Kompilieren Sie OpenCV erneut und testen Sie Ihren Code.

Hoffen, das hilft anderen Menschen mit diesem Problem zu kämpfen!

+0

Schön gemacht. :) Vergessen Sie nicht, Ihre Antwort auch für die Extra-Wiederholung zu akzeptieren. –