使用OpenCV實現(xiàn)讀取和顯示圖像與視頻
概述
OpenCV 是一個強大的計算機視覺庫,廣泛應用于圖像處理和視頻處理等領域。本文將詳細介紹如何使用 OpenCV 在 Python 中讀取和顯示圖像以及視頻,并通過具體的代碼示例來展示整個過程。
環(huán)境準備
在開始之前,請確保已經(jīng)安裝了 OpenCV 庫。如果沒有安裝,可以通過以下命令進行安裝:
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為默認第一個攝像頭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碼二進制后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'...')以避免轉義字符的問題。
顯示圖像:
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為默認第一個攝像頭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碼二進制后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 表示默認攝像頭)。
設置視頻屬性:
cap.set(3, 800) # 3為寬 cap.set(4, 600) # 4為高 cap.set(10, 5) # 10為亮度
使用 cap.set() 方法設置視頻捕獲屬性。參數(shù) 3 表示寬度,4 表示高度,10 表示亮度。
讀取和顯示視頻幀:
while True:
success, img = cap.read()
if success:
cv2.imshow('video', img)
else:
break
使用 cap.read() 方法讀取視頻幀。如果讀取成功,success 為 True,img 為當前幀的圖像;否則,success 為 False,表示視頻結束或讀取失敗。
按鍵檢測:
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() 關閉所有OpenCV窗口。
主函數(shù)
if __name__ == '__main__':
# read_img()
read_video()
主函數(shù):
if __name__ == '__main__': 確保當腳本直接運行時才執(zhí)行以下代碼。
調用 read_img() 或 read_video() 函數(shù)來讀取和顯示圖像或視頻。
總結
本文詳細介紹了如何使用 OpenCV 在 Python 中讀取和顯示圖像以及視頻,并通過具體的代碼示例展示了整個過程。通過使用 cv2.imread()、cv2.imshow()、cv2.VideoCapture() 和 cv2.waitKey() 等函數(shù),我們可以輕松地處理圖像和視頻數(shù)據(jù)。
到此這篇關于使用OpenCV實現(xiàn)讀取和顯示圖像與視頻的文章就介紹到這了,更多相關OpenCV讀取顯示圖像與視頻內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!
相關文章
成功解決ValueError:?Supported?target?types?are:('binary
本文給大家分享成功解決ValueError:?Supported?target?types?are:('binary',?'multiclass').?Got?'continuous'?instead.的錯誤問題,需要的朋友可以參考下2023-03-03
使用Python實現(xiàn)在Excel工作表中創(chuàng)建、修改及刪除表格區(qū)域
在數(shù)據(jù)分析和自動化處理的工作中,Excel作為一種強大的工具被廣泛應用,而通過Python來操作Excel工作表中的表格,可以極大提高工作效率,下面我們就來學學如何使用Python在Excel工作表中創(chuàng)建,修改及刪除表格吧2024-12-12
詳解Python實現(xiàn)按任意鍵繼續(xù)/退出的功能
在學Python時在總想實現(xiàn)一個按任意鍵繼續(xù)/退出的程序(受.bat毒害), 奈何一直沒有寫,今天抽時間寫出來了,下面分享給大家,有需要的可以參考借鑒。2016-08-08

