Python-OpenCV中VideoCapture類的使用


目錄


      主要記錄Python-OpenCV中的VideoCapture類的使用;官方文檔

    VideoCapture()是用於從視頻文件、圖片序列、攝像頭捕獲視頻的類;


    #!/usr/bin/env python
    #-*- coding:utf-8 -*-
    # @Time    : 19-4-21 上午10:31
    # @Author  : chen
    
    """
    VideoCapture()的使用
    """
    import cv2
    import argparse
    import os
    import pdb
    
    ap = argparse.ArgumentParser()
    ap.add_argument("-v", "--videoPath", default="./video_1.mp4", help="path to input video")
    ap.add_argument("-o", "--outputPath", default="grabImages", help="path to output frames")
    
    args = vars(ap.parse_args())
    
    # 初始化,並讀取第一幀
    # rval表示是否成功獲取幀
    # frame是捕獲到的圖像
    vc = cv2.VideoCapture(args["videoPath"])
    rval, frame = vc.read()
    
    # 獲取視頻fps
    fps = vc.get(cv2.CAP_PROP_FPS)
    # 獲取視頻總幀數
    frame_all = vc.get(cv2.CAP_PROP_FRAME_COUNT)
    print("[INFO] 視頻FPS: {}".format(fps))
    print("[INFO] 視頻總幀數: {}".format(frame_all))
    print("[INFO] 視頻時長: {}s".format(frame_all/fps))
    
    outputPath = os.path.sep.join([args["outputPath"]])
    if os.path.exists(outputPath) is False:
        print("[INFO] 創建文件夾,用於保存提取的幀")
        os.mkdir(outputPath)
    
    # 每隔100幀保存一張圖片
    frame_interval = 100
    # 統計當前幀
    frame_count = 1
    # 保存圖片個數
    count = 0
    while rval:
        rval, frame = vc.read()
        if frame_count % frame_interval == 0:
            filename = os.path.sep.join([outputPath, "test_{}.jpg".format(count)])
            cv2.imwrite(filename, frame)
            count += 1
            print("保存圖片:{}".format(filename))
        frame_count += 1
    
    # 關閉視頻文件
    vc.release()
    print("[INFO] 總共保存:{}張圖片".format(count))
    


    免責聲明!

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



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