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) | |