OpenCV 2.2 版,C++ 接口(interface)。
当使用以下代码片段在窗口中显示加载的图像时
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;
}
我在使用鼠标按下关闭按钮
而不是转义键来关闭图像时遇到问题。
在这种情况下,我的程序将在 while
中被阻塞,退出它的唯一方法是停止执行,这显然是不希望的。
是否有控制关闭按钮
是否被按下的函数?
这样我就可以将它添加到 while 循环中,如下所示:
例如
while( 1 ) {
if( cvWaitKey(100) == 27 ) break;
if( cvCloseButtonPressed == 1) break; <--- purely invented method I'm looking for...
}
最佳答案
您可以使用 cvGetWindowHandle()
函数来获取命名窗口的句柄。窗口句柄是操作系统特定的功能。
win32 的示例如下所示:
HWND hwnd = (HWND)cvGetWindowHandle("Display window");
while(IsWindowVisible(hwnd)) {
if( cvWaitKey(100) == 27 ) break;
}
IsWindowVisible() 是一个 winapi 函数,因此您可能需要添加 #include <windows.h>
关于OpenCV 关闭带有鼠标问题的窗口,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9887310/