問題描述:
在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()