OpenCV 2.2版,C ++接口。
在带有以下代码段的窗口中显示加载的图像
cvStartWindowThread();
Mat image;
image = imread(argv[1], CV_LOAD_IMAGE_COLOR); // Read the file
if(! image.data ) // Check for invalid input
{
cout << "Could not open or find the image" << std::endl ;
return -1;
}
namedWindow( "Display window", CV_WINDOW_AUTOSIZE );// Create a window for display.
imshow( "Display window", image );
while( 1 ) {
if( cvWaitKey(100) == 27 ) break;
}
使用鼠标按close button
关闭图像时出现问题,而不是使用转义键。
在这种情况下,我的程序将被while
阻止,退出它的唯一方法就是停止执行,这显然是不可取的。
是否有任何功能可以控制是否按下close button
?
这样我就可以在while循环中添加它:
E.g。
while( 1 ) {
if( cvWaitKey(100) == 27 ) break;
if( cvCloseButtonPressed == 1) break; <--- purely invented method I'm looking for...
}
答案 0 :(得分:10)
您可以使用cvGetWindowHandle()
函数来处理您指定的窗口。窗口句柄是特定于操作系统的功能。
win32的一个示例如下所示:
HWND hwnd = (HWND)cvGetWindowHandle("Display window");
while(IsWindowVisible(hwnd)) {
if( cvWaitKey(100) == 27 ) break;
}
IsWindowVisible()是一个winapi函数,因此您可能想要添加#include <windows.h>
答案 1 :(得分:2)
答案 2 :(得分:0)
if (!cvGetWindowHandle(windowName.c_str())) {
destroyAllWindows();
exit(1);
}