OpenCV Python:如何检测窗口是否关闭?
Python中的 OpenCV 提供了一个方法cv2.getWindowProperty()来检测窗口是关闭还是打开。如果所有窗口都关闭,getWindowProperty() 返回 -1。这是我们在使用 OpenCV 包时面临的主要问题之一,有时很难检测到窗口是打开还是关闭。当用户关闭窗口时,该方法会检测到它。
Syntax: cv2.getWindowProperty(window_name, window_property)
parameters:
- window_name : is the name of the window.
- window_property : it’s the window property to retrieve. we use flags.
flags which we can use:
- cv.2WND_PROP_VISIBLE : checks whether the window is visible and open.
- cv2.WND_PROP_TOPMOST
- cv2.WND_PROP_OPENGL
- cv2.WND_PROP_ASPECT_RATIO
- cv2.WND_PROP_AUTOSIZE
- cv.WND_PROP_FULLSCREEN
方法
- 我们读取图像然后显示它,窗口名称也在 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