""" extract_frames.py — Extract frames from videos for dataset creation Usage: python extract_frames.py --video traffic.mp4 --out frames/ --every 15 """ import cv2 import argparse from pathlib import Path def extract_frames(video_path: str, out_dir: str, every: int = 10, max_frames: int = 5000): cap = cv2.VideoCapture(video_path) out = Path(out_dir) out.mkdir(parents=True, exist_ok=True) n, saved = 0, 0 while True: ret, frame = cap.read() if not ret or saved >= max_frames: break if n % every == 0: fp = out / f"frame_{saved:06d}.jpg" cv2.imwrite(str(fp), frame) saved += 1 n += 1 cap.release() print(f"Saved {saved} frames to {out_dir}") if __name__ == "__main__": p = argparse.ArgumentParser() p.add_argument("--video", required=True) p.add_argument("--out", default="frames") p.add_argument("--every", type=int, default=10) p.add_argument("--max", type=int, default=5000) args = p.parse_args() extract_frames(args.video, args.out, args.every, args.max)