Spaces:
Running
on
Zero
Running
on
Zero
| import os, sys, shutil | |
| import numpy as np | |
| import math | |
| from statistics import mean | |
| import matplotlib.pyplot as plt | |
| if __name__ == "__main__": | |
| input_folder_paths = ["../datasets_rob/Bridge_v1_raw", "../datasets_rob/Bridge_v2_raw"] # "../datasets_rob/Bridge_v1_raw", "../datasets_rob/Bridge_v2_raw" | |
| num_frames = 14 | |
| store_name = "movement.png" | |
| average_movement_list = [] | |
| not_valid_num = 0 | |
| not_exists_num = 0 | |
| # Iterate each file | |
| for input_folder_path in input_folder_paths: | |
| for sub_folder_name in sorted(os.listdir(input_folder_path)): | |
| sub_folder_path = os.path.join(input_folder_path, sub_folder_name) | |
| flow_path = os.path.join(sub_folder_path, 'flow.txt') | |
| if not os.path.exists(flow_path): | |
| not_exists_num += 1 | |
| continue | |
| # Read the movement | |
| file = open(flow_path, 'r') | |
| info = file.readlines() | |
| print(info) | |
| if len(info) == 0: | |
| not_valid_num += 1 | |
| continue | |
| info = info[0][:-2] | |
| per_video_movement = float(info) | |
| # Calculate the number of frames in this video | |
| num_frames_input = 0 | |
| valid = True | |
| for file_name in os.listdir(sub_folder_path): # num_frames_input is the total number of files with name begin with im_ | |
| if file_name.startswith("im_"): | |
| num_frames_input += 1 | |
| for idx in range(num_frames_input): # Ensure that this number is concurrent | |
| img_path = os.path.join(sub_folder_path, 'im_' + str(idx) + '.jpg') | |
| if not os.path.exists(img_path): # Should be sequential existing | |
| valid = False | |
| break | |
| if num_frames_input < 2: | |
| valid = False | |
| if not valid: | |
| not_valid_num += 1 | |
| print("This is not valid path") | |
| continue | |
| average_movement_list.append(per_video_movement * (num_frames_input/num_frames)) # Have more than one than expected, but we keep this | |
| print("average movement of {} is {}".format(sub_folder_name, average_movement_list[-1])) | |
| print("not_exists_num is ", not_exists_num) | |
| print("not_valid_num is ", not_valid_num) | |
| print("average_movement_list length is ", len(average_movement_list)) | |
| # Get mean and variance data | |
| mean_value = mean(average_movement_list) | |
| std_value = math.sqrt(np.var(average_movement_list)) | |
| print("Mean is ", mean_value) | |
| print("std_value is ", std_value) | |
| # Plot the figure | |
| n, bins, patches = plt.hist(average_movement_list, bins=100) | |
| plt.title("Mean" + str(mean_value) + "_STD"+str(std_value)) | |
| plt.savefig(store_name) | |