make_yolo_images.py 1.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849
  1. from pathlib import Path
  2. import cv2
  3. from tqdm import tqdm
  4. from sorawm.configs import ROOT
  5. videos_dir = ROOT / "videos"
  6. datasets_dir = ROOT / "datasets"
  7. images_dir = datasets_dir / "images"
  8. images_dir.mkdir(exist_ok=True, parents=True)
  9. if __name__ == "__main__":
  10. fps_save_interval = 1 # Save every 1th frame
  11. idx = 0
  12. for video_path in tqdm(list(videos_dir.rglob("*.mp4"))):
  13. # Open the video file
  14. cap = cv2.VideoCapture(str(video_path))
  15. if not cap.isOpened():
  16. print(f"Error opening video: {video_path}")
  17. continue
  18. frame_count = 0
  19. while True:
  20. ret, frame = cap.read()
  21. # Break if no more frames
  22. if not ret:
  23. break
  24. # Save frame at the specified interval
  25. if frame_count % fps_save_interval == 0:
  26. # Create filename: image_idx_framecount.jpg
  27. image_filename = f"image_{idx:06d}_frame_{frame_count:06d}.jpg"
  28. image_path = images_dir / image_filename
  29. # Save the frame
  30. cv2.imwrite(str(image_path), frame)
  31. frame_count += 1
  32. # Release the video capture object
  33. cap.release()
  34. idx += 1
  35. print(f"Processed {idx} videos, extracted frames saved to {images_dir}")