一、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
微信掃一掃
支付寶掃一掃