import cv2 def extract_frames(video_path, num_frames=32): cap = cv2.VideoCapture(video_path) if not cap.isOpened(): raise RuntimeError("Cannot open video") total = int(cap.get(cv2.CAP_PROP_FRAME_COUNT)) step = max(total // num_frames, 1) frames = [] for i in range(num_frames): cap.set(cv2.CAP_PROP_POS_FRAMES, i * step) ret, frame = cap.read() if not ret: break frames.append(frame) cap.release() if len(frames) == 0: raise RuntimeError("No frames extracted") while len(frames) < num_frames: frames.append(frames[-1]) return frames