
OpenCV中提供了一個基本的視頻操作類VideoCaputre,它是OpenCV用來通過攝像頭、視頻文件或圖像序列來獲取及操作視頻的類。VideoCaputre有兩種讀取視頻的方法,分別是通過攝像頭讀取與通過視頻文件讀取。
通過打開攝像頭捕捉視頻 :
import cv2 #獲取一個視頻並打開 cap=cv2.VideoCapture(0) #打開攝像頭並創建攝像頭對象 #其中0表示打開內置攝像頭,1表示打開外接攝像頭 if cap.isOpened(): #VideoCaputre對象是否成功打開 print('已經打開了攝像頭捕捉視頻') else: print('打開攝像頭失敗')
通過打開視頻文件讀取視頻:
import cv2 #獲取一個視頻並打開 cap=cv2.VideoCapture('1.mp4') if cap.isOpened(): #VideoCaputre對象是否成功打開 print('已經打開了視頻文件') else: print('視頻文件打開失敗')
視頻的分解:
視頻其實就是由連續的圖像畫面組成的。當連續的圖像變化每秒超過24幀畫面以上時,根據視覺暫留原理,人眼就無法識別是否是靜態畫面了,這樣平滑連續的視覺效果看起來就像是視頻了。
幀率是以幀稱為單位的位圖圖像連續出現在顯示器上的頻率,通俗來講,就是1秒鍾的幀(fps),也就是1秒鍾展示的圖片數量。
import cv2 #獲取一個視頻並打開 cap=cv2.VideoCapture('1.mp4') if cap.isOpened(): #VideoCaputre對象是否成功打開 print('已經打開了視頻文件') fps = cap.get(cv2.CAP_PROP_FPS) # 返回視頻的fps--幀率 width = cap.get(cv2.CAP_PROP_FRAME_WIDTH) # 返回視頻的寬 height = cap.get(cv2.CAP_PROP_FRAME_HEIGHT) # 返回視頻的高 print('fps:', fps,'width:',width,'height:',height) i=0 while 1: if i==15: print('保存了視頻的前15幀圖像,保存結束') break else: i=i+1 ret, frame = cap.read() # 讀取一幀視頻 # ret 讀取了數據就返回True,沒有讀取數據(已到尾部)就返回False # frame 返回讀取的視頻數據--一幀數據 file_name='.\\aa\\img'+str(i)+'.jpg' cv2.imwrite(file_name, frame) else: print('視頻文件打開失敗')

