解决opencv点击右上角×号关掉图片窗口程序并未继续或者结束的问题

1.我们通常想要显示一张图片代码如下:

import cv2

img = cv2.imread('E:\picture.png')
cv2.imshow("img", img)
cv2.waitKey()
cv2.destroyWindow('img')

其中cv2.waitKey(parameter)函数的功能是不断刷新图像,当parameter = None or 0表示一直显示,其它表示显示的毫秒数;
这个时候我们按下键盘Esc键它就会关闭图像窗口结束程序,但点击窗口×号程序并未结束,其还处于cv2.waitKey()语句的不断循环中。
我们可以通过设置两点来使其检测到窗口关闭就结束程序。

解决

1.直接看代码,第一处替换

import cv2

img = cv2.imread('E:\picture.png')
cv2.imshow("img", img)
while True:
    cv2.waitKey(1)
cv2.destroyWindow('img')

这样其实跟上面是等效的,只不过这个时候按Esc键无法退出,其会不断循环,这个时候我们再加一个检测窗口是否关闭的函数cv2.getWindowProperty(这个函数我也不太懂原理,知道咋用就行)
2.加上检测函数

import cv2

img = cv2.imread('E:\picture.png')
cv2.imshow("img", img)
while True:
    if cv2.getWindowProperty('img', 0) == -1: #当窗口关闭时为-1,显示时为0
        break
    cv2.waitKey(1)
cv2.destroyWindow('img')

这样做×号关掉窗口程序就能继续运行或者结束运行啦!

你可能感兴趣的:(opencv,python,计算机视觉)