【OpenCV】OpenCV 利用 python OpenCV 將一部影片拆成一張張圖片 | last update: 2024/04/24

【OpenCV】利用 python OpenCV 將一部影片拆成一張張圖片

很多時候,我們會需要將一部影片拆成一張張的圖片,
我們可以用 OpenCV 實現這件事情,
以下為範例程式碼。

如果要自己運用,需要修改的部分:

  • video_path = '.mp4'
    • 影片的路徑,需改為影片名稱。
  • output_folder = './output/'
  • 影片轉換圖片後,圖片的輸出位置。 (注意!資料夾會自己建立,但如果資料夾已存在,會刪掉資料夾內所有東西!)
  • 執行後等待結果,我們就會在同一個目錄底下 output 的資料夾拿到我們要的所有圖片了。


    import os
    import cv2
    
    video_path = '<your_file>.mp4'
    output_folder = './output/'
    
    if os.path.isdir(output_folder):
        print("Delete old result folder: {}".format(output_folder))
        os.system("rm -rf {}".format(output_folder))
    os.system("mkdir {}".format(output_folder))
    print("create folder: {}".format(output_folder))
    
    vc = cv2.VideoCapture(video_path)
    fps = vc.get(cv2.CAP_PROP_FPS)
    frame_count = int(vc.get(cv2.CAP_PROP_FRAME_COUNT))
    print(frame_count)
    video = []
    
    for idx in range(frame_count):
        vc.set(1, idx)
        ret, frame = vc.read()
        height, width, layers = frame.shape
        size = (width, height)
    
        if frame is not None:
            file_name = '{}{:08d}.jpg'.format(output_folder,idx)
            cv2.imwrite(file_name, frame)
    
        print("
    process: {}/{}".format(idx+1 , frame_count), end = '')
    vc.release()
    

    一些我搜尋用的關鍵字

    • get images from video

    Reference

    Licensed under CC BY-NC-SA 4.0