📜  OpenCV Python:如何检测窗口是否关闭?

📅  最后修改于: 2022-05-13 01:54:22.142000             🧑  作者: Mango

OpenCV Python:如何检测窗口是否关闭?

Python中的 OpenCV 提供了一个方法cv2.getWindowProperty()来检测窗口是关闭还是打开。如果所有窗口都关闭,getWindowProperty() 返回 -1。这是我们在使用 OpenCV 包时面临的主要问题之一,有时很难检测到窗口是打开还是关闭。当用户关闭窗口时,该方法会检测到它。

方法

  • 我们读取图像然后显示它,窗口名称也在 cv2.imshow() 方法中指定。
  • 然后我们使用 while 循环等待用户按下 ESC(退出键)来销毁所有窗口。窗口被破坏后,循环被打破。
  • 我们使用 getWindowProperty() 进行最后一次检查以查看窗口是否关闭,该函数将窗口名称和标志作为参数。
  • 如果窗口关闭,该方法返回 -1。

在下面的代码中,当窗口关闭时,它返回-1。即使窗口关闭有时Python没有响应,使用waitkey(1)会立即关闭窗口。

Python3
# importing packages
import cv2
  
# reading image
img = cv2.imread('sunset.jpeg')
cv2.imshow('sunset', img)
while True:
    
    # it waits till we press a key
    key = cv2.waitKey(0)
  
    # if we press esc
    if key == 27:
        print('esc is pressed closing all windows')
        cv2.destroyAllWindows()
        break
  
if cv2.getWindowProperty('sunset', cv2.WND_PROP_VISIBLE) < 1:
    print("ALL WINDOWS ARE CLOSED")
cv2.waitKey(1)


输出:

esc is pressed closing all windows
ALL WINDOWS ARE CLOSED
-1