Spaces:
Running
on
Zero
Running
on
Zero
import cv2 | |
import os | |
import tempfile | |
import logging | |
from typing import List | |
logging.basicConfig(level=logging.INFO) | |
logger = logging.getLogger(__name__) | |
def extract_frames(video_path: str, skip: int = 1) -> List: | |
""" | |
Extract frames from a video. | |
Args: | |
video_path (str): Path to the video file. | |
skip (int): Number of frames to skip between extractions. | |
Returns: | |
List of BGR frames as numpy arrays. | |
""" | |
logger.info(f"Extracting frames from video: {video_path}") | |
frames = [] | |
cap = cv2.VideoCapture(video_path) | |
frame_count = 0 | |
while True: | |
ret, frame = cap.read() | |
if not ret: | |
break | |
if frame_count % skip == 0: | |
frames.append(frame) | |
frame_count += 1 | |
cap.release() | |
logger.info(f"Extracted {len(frames)} frames") | |
return frames | |