Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/62.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 如何检查opencv窗口是否关闭_C++_C_Opencv - Fatal编程技术网

C++ 如何检查opencv窗口是否关闭

C++ 如何检查opencv窗口是否关闭,c++,c,opencv,C++,C,Opencv,如何检查opencv窗口是否已关闭 我想: cvNamedWindow("main", 1); while(!cvWindowIsClosed("main")) { cvShowImage("main", myImage); } 但这些都不是这样的cvWindowIsClosed(…)函数 您想做的事情可以通过以下方式实现: 函数cvGetWindowHandle返回本机窗口句柄(Win32为HWND,GTK+为GtkWidget)。[仅限Qt后端]Qt特定详细信息:函数cvG

如何检查opencv窗口是否已关闭

我想:

cvNamedWindow("main", 1);

while(!cvWindowIsClosed("main"))
{
    cvShowImage("main", myImage);   
}

但这些都不是这样的cvWindowIsClosed(…)函数

您想做的事情可以通过以下方式实现:

函数cvGetWindowHandle返回本机窗口句柄(Win32为HWND,GTK+为GtkWidget)。[仅限Qt后端]Qt特定详细信息:函数cvGetWindowHandle返回从Qt类QWidget继承的本机窗口句柄

其思想是获取窗口句柄,然后使用特定的平台API函数检查该句柄是否仍然有效

编辑:

或者你可以使用传统的方法:

char exit_key_press = 0;
while (exit_key_press != 'q') // or key != ESC
{
   // retrieve frame

   // display frame

   exit_key_press = cvWaitKey(10);
}

假设您只打开了一个图像窗口,然后单击其拐角处的“x”按钮将导致waitkey()函数返回-1值。 然后检查cvGetWindowHandle(“窗口的名称”)函数是否返回0。如果它返回0,那么窗口实际上是关闭的。 我已经在OpenCV3中测试了它。 但是我仍然不太清楚waitkey()返回-。如果有人能解释为什么会发生这种情况,我将不胜感激。 [我不知道我对这个问题的回答在这么长时间后是否相关。但希望如果其他人(像我一样)遇到同样的问题,这个回答可能会帮助他们。] 谢谢。

这样就可以了

#include <opencv2/opencv.hpp>

std::string mTitle = "title of my window";

while (cvGetWindowHandle(mTitle.c_str()))
{
   // ...
}
#包括
std::string mTitle=“我的窗口标题”;
while(cvGetWindowHandle(mTitle.c_str()))
{
// ...
}

您可以使用cv::getWindowProperty方法

这样做:

cv::namedWindow("main", WINDOW_AUTOSIZE);

while(1)
{
     cv::imshow("main", myImage);

     // add this IF.
     if (cv::getWindowProperty("main", WND_PROP_AUTOSIZE) == -1)
         break;
}

关闭窗口时,getWindowProperty将返回-1。

在Python OpenCV版本3.4.2、Ubuntu Bionic、
cv2.getWindowProperty('Main',cv2.WND_PROP_VISIBLE)
关闭窗口时返回浮动0.0(零),打开窗口时返回1.0(一),无论是否可见。是的,当它被最小化时,或者在另一个窗口后面,或者在另一个桌面上时,仍然是1.0。

在main()结尾之前,输入以下代码:

int main(int, char**){
.
.
.

bool visible = true;
while(visible){
        waitKey(1000);
        visible = getWindowProperty("Main",WND_PROP_VISIBLE) > 0;
    }
    return 0;
}

多年来从未需要过这样的东西。你到底想干什么?最有可能的是,还有其他方法可以实现您想要的。@karlphillip我希望在用户关闭窗口之前渲染新帧。