Spaces:
Running
on
Zero
Running
on
Zero
''' | |
This file is trying to repeat the frames such the it reaches target frames needed | |
''' | |
import os, shutil, sys | |
if __name__ == "__main__": | |
input_path = "/nfs/turbo/coe-jjparkcv/boyangwa/AVDC/AVDC_results" | |
store_path = "/nfs/turbo/coe-jjparkcv/boyangwa/AVDC/AVDC_results_interpolated" | |
total_frames_needed = 14 | |
# Handle the file folder management | |
if os.path.exists(store_path): | |
shutil.rmtree(store_path) | |
os.makedirs(store_path) | |
for video_name in sorted(os.listdir(input_path)): | |
sub_input_path = os.path.join(input_path, video_name) | |
sub_store_path = os.path.join(store_path, video_name) | |
# Create the store place | |
os.makedirs(sub_store_path) | |
# Find valid image lists | |
num_frames_input = 0 | |
for file_name in os.listdir(sub_input_path): | |
if file_name.endswith("png"): | |
num_frames_input += 1 | |
print("num_frames_input is ", num_frames_input) | |
# Calculate needed parameters | |
division_factor = total_frames_needed // num_frames_input | |
remain_frames = (total_frames_needed % num_frames_input) - 1 # -1 for adaptation | |
# Define the gap | |
gaps = [division_factor for _ in range(num_frames_input)] | |
for idx in range(remain_frames): | |
if idx % 2 == 0: | |
gaps[idx//2] += 1 # Start to end order | |
else: | |
gaps[-1*(1+(idx//2))] += 1 # End to start order | |
print("gaps is ", gaps) | |
# Write to the new folder | |
store_idx = 0 | |
for frame_idx, gap in enumerate(gaps): | |
for tmp in range(gap): # Repeat copy gap num of times | |
img_path = os.path.join(sub_input_path, str(frame_idx)+".png") | |
shutil.copyfile(img_path, os.path.join(sub_store_path, str(store_idx)+".png")) | |
store_idx += 1 | |