[英]Closing video window using close “X” button in OpenCV, Python
我正在使用 Python 中的 OpenCV 显示来自相机的实时视频。 这是代码:
capture = cv.CaptureFromCAM(0)
if capture:
cv.NamedWindow("Live Video", cv.CV_WINDOW_AUTOSIZE)
frame = cv.QueryFrame(capture)
if frame:
cv.ShowImage("Live Video", frame)
cv.WaitKey(0)
cv.DestroyWindow("Live Video")
现在,我只能通过按“esc”来关闭我的视频窗口,但是当我单击窗口的关闭“X”按钮时没有任何反应。 有没有办法让它发挥作用?
使用cv2
Python 模块有一种方法可以做到这一点,我在这里发布了解决方案:
https://stackoverflow.com/a/37881722/2897426
这篇文章仅供参考,任何寻找它的人都可以找到它
我遇到了同样的问题,我找到了一种简单的方法来做到这一点:
您可以使用cv2.getWindowProperty(windowName, cv2.WND_PROP_VISIBLE)
检查当前窗口是否可见,如果不可见,则可以销毁该窗口。 如果该方法可见,则返回1
否则返回0
。 下面是一个实现:
while True:
_, frame = cap.read()
cv2.imshow(windowName, frame)
keyCode = cv2.waitKey(1)
if cv2.getWindowProperty(windowName, cv2.WND_PROP_VISIBLE) <1:
break
cv2.destroyAllWindows()
已接受的答案链接到一个永远不会工作的解决方案,因为 0 包含在 >=0 中,并且在cv2.getWindowProperty()
使用了错误的第二个参数,而这些问题只会在线程的后面间接得到解决。 我将此添加为答案,因为我在第一次访问此线程时找不到正确的解决方案,而这正是我需要和使用的。
OpenCV 没有这个功能,默认只处理按键操作。
如果您想这样做,您必须使用创建您的窗口的窗口管理器的句柄(GTK、QT 等)。
如果您使用 Windows,这篇文章描述了一个类似的问题。 如果没有,请告诉我;)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.