def main(args): input_dir = check_input_dir(args.input_dir) output_dir = check_output_dir(args.output_dir) output_path = output_dir.split('/') if args.video_id: video_id = args.video_id else: video_id = output_path[-2] fps = None fps_txt = '/'.join(output_path) + output_path[-2] + "_fps.txt" with open(fps_txt, 'r') as f: line = f.readline() fps = int(float(line.split()[0])) # we want target and fps frame rate to be the same since # the data is not interpolated to 30 fps yet target_frame_rate = fps targets = '/'.join(output_path) + output_path[-2] + "_targets.txt" desired_person_at_frame = read_desired_frames(targets, fps, target_frame_rate) # append '/data/' to output dir data_output_dir = check_output_dir(output_dir + 'data/') compile_all_poses(input_dir, data_output_dir, desired_person_at_frame, video_id)
def get_json_names(input_dir): """ Go into input dir and obtain all json file names """ # confirm input dir is valid and modify input dir if it doesn't end in / input_dir = check_input_dir(input_dir) json_file_names = [ pos_json for pos_json in os.listdir(input_dir) if pos_json.endswith('.json') ] json_file_names = sorted(json_file_names) return json_file_names
def main(args): # if none, then get current working dir for input_dir if args.input_dir: input_dir = check_input_dir(args.input_dir) else: # assuming cwd input_dir = check_output_dir(args.input_dir) # default wil be same as input_dir # get frame rate input_path = input_dir.split('/') fps_txt = '/'.join(input_path) + input_path[-2] + "_fps.txt" fps = 30 with open(fps_txt, 'r') as f: line = f.readline() fps = int(float(line.split()[0])) input_dir = check_output_dir(input_dir + 'data/') if not args.output_dir: output_dir = input_dir else: output_dir = check_output_dir(args.output_dir) # if specific input file is given, process only that one if args.input_file: input_filename = args.input_file.split('_') # load using input_dir compiled_poses = np.load(input_dir + args.input_file) processed = preprocess_poses(compiled_poses, fps) # compiled_{id}_line_{line}.npy filename = f"processed_{'_'.join(input_filename[1:])}" # save using output_dir print(f"Saved to {filename}") np.save(output_dir + filename, processed) print(processed.shape) else: # fetch every input file from input dir import glob for input_filename in glob.glob(input_dir + "compiled*.npy"): compiled_poses = np.load(input_filename) processed = preprocess_poses(compiled_poses, fps) input_filename = input_filename.split('/')[-1].split('_') output_filename = output_dir + f"processed_{'_'.join(input_filename[1:])}" print(f"Saved to {output_filename}") np.save(output_filename, processed) print(processed.shape) # generate video if args.write_video: write_to_video(processed)
def main(args): # need input_dir if args.input_dir: input_dir = check_input_dir(args.input_dir) else: input_dir = check_output_dir(args.input_dir) # get frame rate of videos input_path = input_dir.split('/') # get frame rate video_id = input_path[-2] fps_txt = '/'.join(input_path) + video_id + "_fps.txt" target_frame_rate = 30 frame_rate = None with open(fps_txt, 'r') as f: line = f.readline() frame_rate = int(float(line.split()[0])) # get targets targets = '/'.join(input_path) + video_id + "_targets.txt" desired_person_at_frame = read_desired_frames(targets, frame_rate, target_frame_rate) # get audio filename if args.input_audio_filename: audio_filename = input_dir + args.input_audio_filename else: audio_filename = input_dir + video_id + '.mp3' # lastly, direct it to data folder input_dir = check_output_dir(input_dir + 'data/') # output_dir can be optional, if not specified, default will be same as input_dir if not args.output_dir: output_dir = input_dir else: output_dir = check_output_dir(args.output_dir) # let convert handle the file saving convert(audio_filename, output_dir, desired_person_at_frame, video_id)
def main(args): input_dir = check_input_dir(args.input_dir) output_dir = check_output_dir(args.output_dir) # write images to: output_dir_images = output_dir + 'images/' # check fps of mp4 if args.check_fps: filename_array = output_dir.split('/') video_filename = output_dir + filename_array[-2] + '.mp4' print(video_filename) video = cv2.VideoCapture(video_filename) fps = video.get(cv2.CAP_PROP_FPS) print(fps) # write to fps data fps_name = output_dir + filename_array[-2] + "_fps.txt" with open(fps_name, 'w') as f: f.write(f'{fps}\n') draw_all_poses(input_dir, output_dir_images)
def main(args): img_array = [] input_dir = check_input_dir(args.input_dir) output_dir = check_output_dir(args.output_dir) mp4name = output_dir + check_mp4(args.output_filename) filenames = sorted(glob.glob(input_dir + '*.jpg')) count = 0 for filename in filenames: if count == 1800: break img = cv2.imread(filename) height, width, layers = img.shape size = (width, height) img_array.append(img) count += 1 fourcc_format = cv2.VideoWriter_fourcc(*'mp4v') out = cv2.VideoWriter(mp4name, fourcc_format, 30, size) for i in range(len(img_array)): out.write(img_array[i]) out.release()