import cv2 import os parsec = int(input("パース秒数を入力してください:")) video_path = input("動画のパスを入力してください:").replace('"', "") lv_value_directory = input("lv_valueのディレクトリを入力してください:").replace( '"', "" ) def extract_frames(video_path, parsec, output_directory): # 出力ディレクトリが存在することを確認 if not os.path.exists(output_directory): os.makedirs(output_directory) # 動画ファイルを開く cap = cv2.VideoCapture(video_path) fps = cap.get(cv2.CAP_PROP_FPS) # 1秒あたりのフレーム数 total_frames = int(cap.get(cv2.CAP_PROP_FRAME_COUNT)) duration_seconds = int(total_frames / fps) print(f"動画の長さ(秒):{duration_seconds}") # 画像を抽出する間隔(フレーム単位) interval = int(fps * 10) # 10秒ごと current_frame = 0 while current_frame < total_frames: # 動画ファイルの現在のフレーム位置を設定 cap.set(cv2.CAP_PROP_POS_FRAMES, current_frame) ret, frame = cap.read() # フレームが正しく読み込まれたか確認 if not ret: break # 画像のサイズを変更 resized_frame = cv2.resize(frame, (192, 108)) # 動画内の時間(秒)を計算し、parsecを足して、最も近い10の数に丸める video_time_seconds = (current_frame / fps) + parsec video_time_rounded = int(video_time_seconds / 10) * 10 # フレームを保存 filename = f"{video_time_rounded:04d}.png" # ファイル名が少なくとも4桁になるようにゼロ埋め cv2.imwrite(os.path.join(output_directory, filename), resized_frame) success = cv2.imwrite(os.path.join(output_directory, filename), resized_frame) if not success: print(f"Failed to save image: {filename}") print(f"保存フォルダパス:{output_directory}") # 次の間隔に移動 current_frame += interval cap.release() # 使用例 # extract_frames("動画のパス.mp4", parsec=5) def main(): extract_frames( video_path, parsec, lv_value_directory, ) if __name__ == "__main__": main()