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() # ファイルのリリース