Untitled
unknown
plain_text
a year ago
2.2 kB
6
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)Editor is loading...
Leave a Comment