anaconda-opencv中解决while True中的imshow()窗口关闭不了的问题
Posted 无乎648
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了anaconda-opencv中解决while True中的imshow()窗口关闭不了的问题相关的知识,希望对你有一定的参考价值。
anaconda-opencv中解决while True中的imshow()窗口关闭不了的问题
这几天在学习python的OpenCV时候发现每次使用while死循环来显示图片就无法关闭图片的弹窗,除非每次都中断服务器才行,通过不断尝试一些代码,发现这个问题可以解决了。
原代码如下,问题主要是imshow()函数在while True中,就无法关闭图片的窗口。
import cv2
import numpy as np
def empty(a):
pass
cv2.namedWindow("TrackBars")
cv2.resizeWindow("TrackBars",640,240)
cv2.createTrackbar("Hue Min","TrackBars",0,179,empty)
cv2.createTrackbar("Hue Max","TrackBars",179,179,empty)
cv2.createTrackbar("Sat Min","TrackBars",0,255,empty)
cv2.createTrackbar("Sat Max","TrackBars",255,255,empty)
cv2.createTrackbar("Val Min","TrackBars",0,255,empty)
cv2.createTrackbar("Val Max","TrackBars",255,255,empty)
# 1.hue就是color的意思只是hue是个更专业的说法。
# 2.saturation就是指颜色的饱和度。
# 3.value是指(色彩的)浓淡关系,敏感程度或(艺术作品的)明暗相称。
while True:
img = cv2.imread("Resources/lambo.png")
h_min=cv2.getTrackbarPos("Hue Min","TrackBars")
h_max=cv2.getTrackbarPos("Hue Max","TrackBars")
s_min=cv2.getTrackbarPos("Sat Min","TrackBars")
s_max=cv2.getTrackbarPos("Sat Max","TrackBars")
v_min=cv2.getTrackbarPos("Val Min","TrackBars")
v_max=cv2.getTrackbarPos("Val Max","TrackBars")
imgHSV=cv2.cvtColor(img,cv2.COLOR_BGR2HSV)
cv2.imshow("output",img)
cv2.imshow("imgHSV",imgHSV)
如果想关闭窗口就应该把waitKey(1)改为waitKey(0)才能正常关闭窗口并退出,但是这样就不能动态刷新图片了,所以我只需要给一个if语句就行,在一定的时间之后就不再动态刷新而是等待关闭窗口并退出程序。
修改代码如下:
def empty(a):
pass
cv2.namedWindow("TrackBars")
cv2.resizeWindow("TrackBars",640,240)
cv2.createTrackbar("Hue Min","TrackBars",0,179,empty)
cv2.createTrackbar("Hue Max","TrackBars",179,179,empty)
cv2.createTrackbar("Sat Min","TrackBars",0,255,empty)
cv2.createTrackbar("Sat Max","TrackBars",255,255,empty)
cv2.createTrackbar("Val Min","TrackBars",0,255,empty)
cv2.createTrackbar("Val Max","TrackBars",255,255,empty)
# 1.hue就是color的意思只是hue是个更专业的说法。
# 2.saturation就是指颜色的饱和度。
# 3.value是指(色彩的)浓淡关系,敏感程度或(艺术作品的)明暗相称。
i=100
while True:
img = cv2.imread("Resources/lambo.png")
h_min=cv2.getTrackbarPos("Hue Min","TrackBars")
h_max=cv2.getTrackbarPos("Hue Max","TrackBars")
s_min=cv2.getTrackbarPos("Sat Min","TrackBars")
s_max=cv2.getTrackbarPos("Sat Max","TrackBars")
v_min=cv2.getTrackbarPos("Val Min","TrackBars")
v_max=cv2.getTrackbarPos("Val Max","TrackBars")
imgHSV=cv2.cvtColor(img,cv2.COLOR_BGR2HSV)
cv2.imshow("output",img)
cv2.imshow("imgHSV",imgHSV)
i-=1
if i!=0:
cv2.waitKey(1)
else:
print(i)
cv2.waitKey(0)
break
如果程序输出了0就说明此时的程序开始停止动态刷新图片而是等待关闭窗口。
以上是关于anaconda-opencv中解决while True中的imshow()窗口关闭不了的问题的主要内容,如果未能解决你的问题,请参考以下文章
实现Runnable的多线程代码中,while(true)表示的啥含义?为啥没有while(t
C语言中,逻辑表达式是一个赋值语句时候是真还是假while(*t=*s)t++;s++啥时候执行?不执行?
Error while execuC:Program FilesGitcmdgit.EXE ls-remote -h -t https://github.com/nhn/raphael.git
chrome-linux/chrome: error while loading shared libraries: libnss3.so解决方法
chrome-linux/chrome: error while loading shared libraries: libnss3.so解决方法
chrome-linux/chrome: error while loading shared libraries: libnss3.so解决方法