import os import random import numpy as np def dense_sampling_from_extracted_frames(folder_path, num_clips=6, frames_per_clip=5): frame_files = sorted([os.path.join(folder_path, f) for f in os.listdir(folder_path) if f.endswith('.npy')]) num_frames = len(frame_files) print(f"Found {num_frames} frames in {folder_path}") if num_frames < num_clips * frames_per_clip: raise ValueError("Not enough frames to sample the required clips.") frames_per_segment = num_frames // num_clips clips = [] for i in range(num_clips): segment_start = i * frames_per_segment segment_end = segment_start + frames_per_segment - 1 max_start_frame = segment_end - frames_per_clip + 1 start_frame = random.randint(segment_start, max_start_frame) clip = [np.load(frame_files[start_frame + j]) for j in range(frames_per_clip)] clips.append(clip) return clips