python opencv 讀取視頻

import cv2

if __name__ == "__main__":
    video_name = "video.ts"
    vc = cv2.VideoCapture(video_name)  # 讀入視頻文件
    video_len = int(vc.get(cv2.CAP_PROP_FRAME_COUNT))  # 視頻總幀數
    video_width = int(vc.get(cv2.CAP_PROP_FRAME_WIDTH))  # 視頻寬度
    video_height = int(vc.get(cv2.CAP_PROP_FRAME_HEIGHT))  # 視頻高度
    video_fps = int(vc.get(cv2.CAP_PROP_FPS))  # 視頻幀率

    print(video_len, video_width, video_height, video_fps)

    if vc.isOpened():  # 判斷是否正常打開
        rval, frame = vc.read()
    else:
        rval = False
    ind = 1
    timeF = 1  # 視頻幀計數間隔頻率

    while rval:  # 循環讀取視頻幀
        rval, frame = vc.read()

        if (ind % timeF == 0):  # 每隔timeF幀進行存儲操作
            cv2.imwrite('image/' + str(ind) + '.jpg', frame)  # 存儲爲圖像
            # frame = cv2.resize(frame, (800, 800))  # 對圖像進行resize
            cv2.imshow("Image", frame)
        ind = ind + 1
        # print(ind)
        cv2.waitKey(1)
    vc.release()

上述代碼是用來讀取視頻中數據,可以進行單幀圖像顯示與保存,其中使用 vc.get() ,將括號內的目標屬性放入後就可以得到相應的結果,具體的屬性可以參考下邊表格。

視頻屬性 屬性說明
cv2.CAP_PROP_POS_MSEC 視頻文件的當前位置(ms)
cv2.CAP_PROP_POS_FRAMES 從0開始索引幀,幀位置。
cv2.CAP_PROP_POS_AVI_RATIO 視頻文件的相對位置(0表示開始,1表示結束)
cv2.CAP_PROP_FRAME_WIDTH 視頻流的幀寬度。
cv2.CAP_PROP_FRAME_HEIGHT 視頻流的幀高度。
cv2.CAP_PROP_FPS 幀率
cv2.CAP_PROP_FOURCC 編解碼器四字符代碼
cv2.CAP_PROP_FRAME_COUNT 視頻文件的幀數
cv2.CAP_PROP_FORMAT retrieve()返回的Mat對象的格式。
cv2.CAP_PROP_MODE 後端專用的值,指示當前捕獲模式
cv2.CAP_PROP_BRIGHTNESS 圖像的亮度,僅適用於支持的相機
cv2.CAP_PROP_CONTRAST 圖像對比度,僅適用於相機
cv2.CAP_PROP_SATURATION 圖像飽和度,僅適用於相機
cv2.CAP_PROP_HUE 圖像色調,僅適用於相機
cv2.CAP_PROP_GAIN 圖像增益,僅適用於支持的相機
cv2.CAP_PROP_EXPOSURE 曝光,僅適用於支持的相機
cv2.CAP_PROP_CONVERT_RGB 布爾標誌,指示是否應將圖像轉換爲RGB
發佈了125 篇原創文章 · 獲贊 319 · 訪問量 66萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章