2017-06-22 64 views
1

我工作的權利拿出一本書來顯示圖像,並複製下面的代碼(基本上是OpenCV的相當於「世界你好」的):OpenCV的imshow不是在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 

不幸的是,當我運行這個代碼,我得到的頭和沒有一個窗口,它:

我懷疑是我搞砸環境或某些安裝OpenCV的時候,但cmake的拋出不會出錯,而且代碼中的按預期運行,在按鍵和所有按鍵上正確退出除了缺少顯示的照片之外,還有一個明顯的例外。

任何提示?

謝謝!

+1

最近發佈了一些類似的問題,例如, https://stackoverflow.com/questions/44639948/image-not-displaying-with-imshow-opencv –

+1

謝謝,@DanMašek!很高興看到這不僅僅是我;今晚我會討論這個問題,看看其他功能是否能夠更好地發揮作用,並且能夠解決imshow似乎具有的問題。 –

+1

相關的錯誤報告:https://github.com/opencv/opencv/issues/8885 –

回答

4

感謝@DanMašek對這一領先,並讓所有的人在此頁:http://answers.opencv.org/question/160201/video-window-not-loading-frame/

要重複他們說什麼,什麼工作對我來說是以下幾點:

要解決這個問題,找到文件window_cocoa.mm;如果從源代碼構建,它將在opencv/modules/highgui/src中。

更改如下:

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

要這樣:

@implementation CVView 
@synthesize image = _image; 

做同樣的事情在CVWindow和CVSlider實現交流商品視頻也是如此。

重新編譯OpenCV並測試你的代碼。

希望這可以幫助其他人解決這個問題!

+0

很好地完成。 :)不要忘記接受你的答案以及額外的代表。 –