ChatGPT+Python 入門編 読者特典②

【課題2】
 動画から指定時間ごとの静止画作成

import cv2
import os

# 設定
video_path = "C:\\Users\\gwing\\Downloads\\test.mov"
interval = 0.1  # フレームを取得する間隔(秒)

# 保存先ディレクトリの設定
save_dir = os.path.join(os.path.dirname(video_path), os.path.splitext(os.path.basename(video_path))[0])
os.makedirs(save_dir, exist_ok=True)  # ディレクトリがない場合は作成

# 動画の読み込み
cap = cv2.VideoCapture(video_path)

if not cap.isOpened():
    raise FileNotFoundError(f"指定した動画ファイル({video_path})が開けませんでした。")

fps = cap.get(cv2.CAP_PROP_FPS)  # フレームレートの取得
frame_count = 0  # フレームカウント用変数
file_count = 0  # ファイル名用カウント変数

while cap.isOpened():
    ret, frame = cap.read()  # フレームを読み込む
    if not ret:
        break

    # 指定した間隔でフレームを保存
    if frame_count % int(fps * interval) == 0:
        save_path = os.path.join(save_dir, f"{os.path.splitext(os.path.basename(video_path))[0]}_{str(file_count).zfill(2)}.jpg")
        cv2.imwrite(save_path, frame)  # フレームの保存
        file_count += 1  # ファイルカウントを1増やす

    frame_count += 1  # フレームカウントを1増やす

cap.release()  # ファイルのリリース