我已经编写了一个OpenCV代码,我的代码有以下语句:
cv::imshow("Matches", matchesImg);
cv::waitKey(0);
无论是调试还是发布代码,我都无法看到显示输出的窗口。
每个项目都出现这种情况,不知道原因,有人可以指导一下吗?
我在Windows 7和Visual Studio 2010上进行编码,并使用OpenCV版本2.4.6。
我已经编写了一个OpenCV代码,我的代码有以下语句:
cv::imshow("Matches", matchesImg);
cv::waitKey(0);
无论是调试还是发布代码,我都无法看到显示输出的窗口。
每个项目都出现这种情况,不知道原因,有人可以指导一下吗?
我在Windows 7和Visual Studio 2010上进行编码,并使用OpenCV版本2.4.6。
imshow()
只是调用了cvShowImage()
,并且至少在Windows上,如果命名窗口不存在,则会调用cvNamedWindow()
来创建它。因此,你的答案不适用于在Windows 7上运行的OpenCV 2.4.4,也可能不适用于其他平台。 - Bullimshow()
的C++源代码,我发现它只是调用了C函数cvShowImage()
。您可以在https://github.com/Itseez/opencv/blob/2.4.6/modules/highgui/src/window.cpp上看到这一点。此外,您还可以在https://github.com/Itseez/opencv/blob/2.4.6/modules/highgui/src/window_w32.cpp上看到`cvShowImage()`的功能。您可以自己试试吗?可能OP的代码还有其他问题。这些链接适用于OpenCV 2.4.6。 - BullnamedWindow()
。 - Bullimshow()
调用了cvShowImage()
,至少对于Windows而言,如果窗口不存在,将执行以下代码:cvNamedWindow(name, CV_WINDOW_AUTOSIZE);
。只有在某种情况下CV_WINDOW_AUTOSIZE
不适合您时,才需要首先调用namedWindow()
。另外,也许icvFindWindowByName()
确实存在错误。但这不影响我——从来没用过namedWindow()
。 - Bull
cv::namedWindow("Matches"); cv::imshow("Matches", matchesImg); cv::waitKey();
- AlexeynamedWindow
创建一个窗口是一个错误。 - Alexeycv::namedWindow("Matches");
似乎可以解决这个问题?此外,您是使用预编译版本的OpenCV还是自己重新构建的版本?还有其他值得注意的事情,比如OpenGL或QT吗? - Bull