Untitled
import cv2 import os import shutil import numpy as np from tqdm import tqdm import time def process_frames(frame_folder, output_folder): frame_files = sorted(os.listdir(frame_folder)) processed_frames = [] print("Processing frames to double the frame rate...") total_frames = len(frame_files) - 1 # Total frames are one less because we are pairing them # Setting up progress bar with tqdm with tqdm(total=total_frames, unit="frame") as pbar: for i in range(total_frames): # Read two consecutive frames frame1 = cv2.imread(os.path.join(frame_folder, frame_files[i])) frame2 = cv2.imread(os.path.join(frame_folder, frame_files[i + 1])) # Ensure frames are of the same size if frame1.shape != frame2.shape: continue # Compute the mean for each pixel intermediate_frame = np.mean([frame1, frame2], axis=0).astype(np.uint8) # Save the intermediate frame (mean of frame1 and frame2) intermediate_filename = f"processed_frame_{i * 2:04d}.jpg" frame2_filename = f"processed_frame_{i * 2 + 1:04d}.jpg" cv2.imwrite(os.path.join(output_folder, intermediate_filename), intermediate_frame) cv2.imwrite(os.path.join(output_folder, frame2_filename), frame2) # Add frames to the processed list processed_frames.append(intermediate_frame) processed_frames.append(frame2) # Delete the original frames after processing os.remove(os.path.join(frame_folder, frame_files[i])) os.remove(os.path.join(frame_folder, frame_files[i + 1])) # Update progress bar pbar.update(1) print("\nFrames processing complete.") return processed_frames # Usage Example: frame_folder = "frames" # Path to the folder containing extracted frames output_folder = "output_frames" # Path to the folder where processed frames will be saved # Create output folder if it doesn't exist os.makedirs(output_folder, exist_ok=True) # Call the function processed_frames = process_frames(frame_folder, output_folder)
Leave a Comment