Untitled

 avatar
unknown
plain_text
a month ago
2.2 kB
2
Indexable
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