在python中使用了cv2.imshow()函数,运行时图片一闪而过,即使添加了time.sleep()函数来阻止窗口关闭,imshow显示的窗口也是灰白的,没有图片信息。
根据stack overflow上的一个解答,cv2.imshow()
后面需要跟随者cv2.waitKey(period)
函数,这个函数可以使图像持续显示给定的一段时间period(ms),否则,图片将无法显示。例如:waitKey(0)
将持续显示图片直到有按键被按下(这一设置很适合用于显示图片);waitKey(25)
将使图片显示25ms,之后图片窗口将会自动关闭。如果你将它置于一个读取图片的loop中,那么它将逐帧显示图片
1、显示一张图片,直至有任意按键被按下则关闭窗口
import cv2
img = cv2.imread('a.png')
cv2.imshow('a frame', img) # a frame 是显示窗口的的标题名称
cv2.waitKey(0)
cv2.destroyAllWindows()
2、连续显示一组照片,当按下q时,退出显示。
import cv2
i = 1 # the tag of the first image
while 1:
img = cv2.imread('img_' + str(i) + '.png')
if img is None:
break
cv2.imshow('frames', img)
key = cv2.waitKey(200) # delay 200ms
if key == ord('q'):
break
i = i + 1
cv2.destroyAllWindows()