一、cv2.imshow()介紹
cv2.imshow()是OpenCV中顯示圖像的主要函數之一。它可以顯示傳遞給它的圖像窗口,或者將圖像作為選定窗口的內容。cv2.imshow()的語法如下:
cv2.imshow(winname, mat)
其中,winname是顯示窗口的名稱,mat是要顯示的圖像。該函數返回值為None。
二、顯示靜態圖像
要顯示靜態圖像,可以使用cv2.imread()函數讀取圖像,然後使用cv2.imshow()函數進行顯示。下面是一個例子:
import cv2 # 讀取圖像 img = cv2.imread('test.jpg') # 顯示圖像 cv2.imshow('image', img) # 等待按鍵事件 cv2.waitKey(0)
運行上述代碼,我們可以看到彈出了一個名為”image”的窗口,其中顯示了讀取的圖像。
三、捕捉鍵盤事件
cv2.imshow()函數通常與cv2.waitKey()配合使用。cv2.waitKey()等待鍵盤事件,返回按下按鍵的ASCII碼。
下面的例子演示了如何在按下ESC鍵或q鍵時關閉圖像顯示窗口:
import cv2 # 讀取圖像 img = cv2.imread('test.jpg') # 顯示圖像 cv2.imshow('image', img) # 循環等待按鍵事件,直到ESC鍵或q鍵被按下 while True: k = cv2.waitKey(0) if k == 27 or k == ord('q'): break # 關閉窗口 cv2.destroyAllWindows()
在該例子中,我們首先顯示圖像,並循環等待按鍵事件。如果按下了ESC鍵或q鍵,就跳出循環,關閉顯示窗口。需要注意的是,cv2.waitKey()的參數0表示無限等待,直到按下按鍵。
四、顯示視頻流
除了靜態圖像,cv2.imshow()函數還可以用於顯示實時視頻流。可以使用cv2.VideoCapture()函數打開視頻文件或攝像頭,然後使用cv2.imshow()函數顯示每個幀。
下面是一個讀取並顯示視頻文件的例子:
import cv2 # 打開視頻文件 cap = cv2.VideoCapture('test.mp4') # 循環顯示每一幀 while cap.isOpened(): # 讀取一幀 ret, frame = cap.read() # 如果幀讀取失敗,退出循環 if not ret: break # 顯示幀 cv2.imshow('video', frame) # 等待按鍵事件,延時10毫秒 k = cv2.waitKey(10) # 如果按下ESC鍵或q鍵,退出循環 if k == 27 or k == ord('q'): break # 釋放視頻文件和窗口 cap.release() cv2.destroyAllWindows()
在該例子中,我們首先使用cv2.VideoCapture()函數打開視頻文件,然後循環讀取每個幀並顯示。如果按下ESC鍵或q鍵,就退出循環,釋放視頻文件和顯示窗口。
五、小結
cv2.imshow()是OpenCV中一個非常重要的函數,它可以用於顯示靜態圖像、捕捉鍵盤事件、以及顯示視頻流等。在使用cv2.imshow()函數時,需要注意顯示窗口名稱、圖像文件的讀取、鍵盤事件的等待、視頻流的讀取等方面的問題。
原創文章,作者:YFJMV,如若轉載,請註明出處:https://www.506064.com/zh-hk/n/372285.html