2017-06-22 70 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

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

相关问题