【问题标题】:Closing video window using close "X" button in OpenCV, Python使用OpenCV,Python中的关闭“X”按钮关闭视频窗口
【发布时间】:2012-10-29 17:53:18
【问题描述】:

我正在使用 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”按钮时没有任何反应。有没有办法让它发挥作用?

【问题讨论】:

标签: python opencv video


【解决方案1】:

OpenCV 没有这个特性,默认只处理按键。

如果您想这样做,您必须使用创建窗口的窗口管理器的句柄(GTK、QT、...)。

This post describes a similar issue in case you use windows. 如果没有,请告诉我;)

【讨论】:

  • 谢谢,我没有注意到那个帖子。是的,我使用的是 Window,所以应该很容易。
  • 这应该是 opencv 中的一个功能,该按钮还有什么用途?
【解决方案2】:

使用cv2 Python 模块有一种方法可以做到这一点,我在此处发布了解决方案:

https://stackoverflow.com/a/37881722/2897426

这篇文章仅供参考,任何寻找它的人都可以找到它

【讨论】:

    【解决方案3】:

    我遇到了同样的问题,我找到了一个简单的方法:

    您可以使用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() 中使用了错误的第二个参数,而问题只是在线程的稍后部分得到间接解决。我将其添加为答案,因为当我第一次访问此线程时找不到正确的解决方案,而这正是我需要和使用的。

    【讨论】:

    • 此解决方案/答案已包含在现有的 answer from @SimonHänisch 中。不过,这里有一个例子可能会有所帮助。
    • @IvoMori 不完全是。直接链接的答案是使用枚举 0,而我在第二个参数中使用 4。 Link to that here 他也在使用 > =0 来捕获 0 和 1。我知道在 cmets 中已经意识到了这一点,但我仍然想在这里发布一个直接的解决方案。回到我的第一句话, enum 0 对我不起作用,对其他人也不起作用(通过一些在线博客试图找到解决 OP 问题的方法)。
    • 很公平,感谢您的澄清。在这种情况下,您可能需要更新您的答案以包含此说明,以便清楚您的答案与@SimonHänisch 现有(且评价很高)的答案有何不同(并且更好)。
    • 终于有人发布了对我有用的例子..谢谢伙计
    • 有人知道类似的 Java 解决方案吗? getWindowsProperty 方法似乎在任何地方都不存在
    猜你喜欢
    • 2021-07-27
    • 2013-04-08
    • 2021-12-09
    • 1970-01-01
    • 1970-01-01
    • 2022-01-22
    • 1970-01-01
    • 1970-01-01
    • 2012-05-14
    相关资源
    最近更新 更多