C++ 如何检查opencv窗口是否关闭
如何检查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
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我希望在用户关闭窗口之前渲染新帧。