| 161 | |
| 162 | |
| 163 | def open_video_writer(args: argparse.Namespace, frame_size: tuple[int, int]) -> cv2.VideoWriter | None: |
| 164 | if not args.output_video: |
| 165 | return None |
| 166 | output_video = Path(args.output_video) |
| 167 | output_video.parent.mkdir(parents=True, exist_ok=True) |
| 168 | fourcc = cv2.VideoWriter_fourcc(*args.video_fourcc) |
| 169 | writer = cv2.VideoWriter(str(output_video), fourcc, args.video_fps, frame_size) |
| 170 | if not writer.isOpened(): |
| 171 | raise RuntimeError(f"Failed to open video writer: {output_video}") |
| 172 | return writer |
| 173 | |
| 174 | |
| 175 | def write_run_metadata(args: argparse.Namespace, output_dir: Path, camera_info: dict[str, str]) -> None: |