使用OpenCV實(shí)現(xiàn)讀取和顯示圖像與視頻
概述
OpenCV 是一個強(qiáng)大的計算機(jī)視覺庫,廣泛應(yīng)用于圖像處理和視頻處理等領(lǐng)域。本文將詳細(xì)介紹如何使用 OpenCV 在 Python 中讀取和顯示圖像以及視頻,并通過具體的代碼示例來展示整個過程。
環(huán)境準(zhǔn)備
在開始之前,請確保已經(jīng)安裝了 OpenCV 庫。如果沒有安裝,可以通過以下命令進(jìn)行安裝:
pip install opencv-python
完整代碼
import cv2 def read_img(): """ 讀取圖片 :return: """ img = cv2.imread(r'./resources/lena.jpeg') cv2.imshow('lena img', img) cv2.waitKey(0) def read_video(): """ 讀取視頻/攝像頭 :return: """ # 視頻路徑為獲取資源,id序號則為攝像頭id,0為默認(rèn)第一個攝像頭id cap = cv2.VideoCapture(r'./resources/video.mp4') # cap = cv2.VideoCapture(0) # cap propId 0-18 cap.set(3, 800) # 3為寬 cap.set(4, 600) # 4為高 cap.set(10, 5) # 10為亮度 while True: success, img = cap.read() if success: cv2.imshow('video', img) else: break if cv2.waitKey(1) & 0xFF == ord('q'): # 有按鍵則返回按鍵ASCII碼,無按鍵則返回-1 # 取按鍵返回ASCII碼二進(jìn)制后8位,為按鍵'q'退出循環(huán) break cap.release() cv2.destroyAllWindows() if __name__ == '__main__': # read_img() read_video()
示例代碼詳解
1. 讀取和顯示圖像
import cv2 def read_img(): """ 讀取圖片 :return: """ img = cv2.imread(r'./resources/lena.jpeg') cv2.imshow('lena img', img) cv2.waitKey(0)
讀取圖像:
img = cv2.imread(r'./resources/lena.jpeg')
使用 cv2.imread() 函數(shù)讀取圖像文件。路徑使用原始字符串(r'...')以避免轉(zhuǎn)義字符的問題。
顯示圖像:
cv2.imshow('lena img', img) cv2.waitKey(0)
使用 cv2.imshow() 函數(shù)顯示圖像。第一個參數(shù)是窗口名稱,第二個參數(shù)是要顯示的圖像。
cv2.waitKey(0) 使程序等待用戶按鍵后退出。0 表示無限期等待。
2. 讀取和顯示視頻
def read_video(): """ 讀取視頻/攝像頭 :return: """ # 視頻路徑為獲取資源,id序號則為攝像頭id,0為默認(rèn)第一個攝像頭id cap = cv2.VideoCapture(r'./resources/video.mp4') # cap = cv2.VideoCapture(0) # cap propId 0-18 cap.set(3, 800) # 3為寬 cap.set(4, 600) # 4為高 cap.set(10, 5) # 10為亮度 while True: success, img = cap.read() if success: cv2.imshow('video', img) else: break if cv2.waitKey(1) & 0xFF == ord('q'): # 有按鍵則返回按鍵ASCII碼,無按鍵則返回-1 # 取按鍵返回ASCII碼二進(jìn)制后8位,為按鍵'q'退出循環(huán) break cap.release() cv2.destroyAllWindows()
讀取視頻或攝像頭:
cap = cv2.VideoCapture(r'./resources/video.mp4') # cap = cv2.VideoCapture(0)
使用 cv2.VideoCapture() 函數(shù)讀取視頻文件或攝像頭。傳入視頻文件路徑或攝像頭ID(例如 0 表示默認(rèn)攝像頭)。
設(shè)置視頻屬性:
cap.set(3, 800) # 3為寬 cap.set(4, 600) # 4為高 cap.set(10, 5) # 10為亮度
使用 cap.set() 方法設(shè)置視頻捕獲屬性。參數(shù) 3 表示寬度,4 表示高度,10 表示亮度。
讀取和顯示視頻幀:
while True: success, img = cap.read() if success: cv2.imshow('video', img) else: break
使用 cap.read() 方法讀取視頻幀。如果讀取成功,success 為 True,img 為當(dāng)前幀的圖像;否則,success 為 False,表示視頻結(jié)束或讀取失敗。
按鍵檢測:
if cv2.waitKey(1) & 0xFF == ord('q'): break
使用 cv2.waitKey(1) 等待1毫秒,如果有按鍵按下,則返回按鍵的ASCII碼。& 0xFF 用于取按鍵ASCII碼的后8位。ord('q') 返回字符 ‘q’ 的ASCII碼。如果按鍵為 ‘q’,則退出循環(huán)。
釋放資源:
cap.release() cv2.destroyAllWindows()
使用 cap.release() 釋放視頻捕獲對象。
使用 cv2.destroyAllWindows() 關(guān)閉所有OpenCV窗口。
主函數(shù)
if __name__ == '__main__': # read_img() read_video()
主函數(shù):
if __name__ == '__main__': 確保當(dāng)腳本直接運(yùn)行時才執(zhí)行以下代碼。
調(diào)用 read_img() 或 read_video() 函數(shù)來讀取和顯示圖像或視頻。
總結(jié)
本文詳細(xì)介紹了如何使用 OpenCV 在 Python 中讀取和顯示圖像以及視頻,并通過具體的代碼示例展示了整個過程。通過使用 cv2.imread()、cv2.imshow()、cv2.VideoCapture() 和 cv2.waitKey() 等函數(shù),我們可以輕松地處理圖像和視頻數(shù)據(jù)。
到此這篇關(guān)于使用OpenCV實(shí)現(xiàn)讀取和顯示圖像與視頻的文章就介紹到這了,更多相關(guān)OpenCV讀取顯示圖像與視頻內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Linux下python與C++使用dlib實(shí)現(xiàn)人臉檢測
這篇文章主要為大家詳細(xì)介紹了Linux下python與C++使用dlib實(shí)現(xiàn)人臉檢測,具有一定的參考價值,感興趣的小伙伴們可以參考一下2018-06-06SpringBoot實(shí)現(xiàn)登錄注冊常見問題解決方案
這篇文章主要介紹了SpringBoot實(shí)現(xiàn)登錄注冊常見問題解決方案,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下2020-03-03使用pytorch實(shí)現(xiàn)可視化中間層的結(jié)果
今天小編就為大家分享一篇使用pytorch實(shí)現(xiàn)可視化中間層的結(jié)果,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2019-12-12用pip給python安裝matplotlib庫的詳細(xì)教程
這篇文章主要介紹了用pip給python安裝matplotlib庫的詳細(xì)教程,本文通過圖文并茂的形式給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下2021-02-02pycharm中連接mysql數(shù)據(jù)庫的步驟詳解
在進(jìn)行Python研發(fā)的時候,pycharm是一個很好的IDE,下面這篇文章主要給大家介紹了pycharm中連接mysql數(shù)據(jù)庫的步驟,文中通過圖文介紹的非常詳細(xì),對大家具有一定的參考價值,需要的朋友們下面來一起看看吧。2017-05-05Python圖像處理之圖像的縮放、旋轉(zhuǎn)與翻轉(zhuǎn)實(shí)現(xiàn)方法示例
這篇文章主要介紹了Python圖像處理之圖像的縮放、旋轉(zhuǎn)與翻轉(zhuǎn)實(shí)現(xiàn)方法,結(jié)合實(shí)例形式分析了Python使用resize()、rotate()及transpose()等函數(shù)進(jìn)行圖像的縮放、旋轉(zhuǎn)及翻轉(zhuǎn)相關(guān)操作技巧,需要的朋友可以參考下2019-01-01