python-opencv-視頻的讀取與分解


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('視頻文件打開失敗')

 

 

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM