def answer_question(frame_list): mask = cv.imread(utils.get_pwd() + '/our_data/masked_frames/0.jpg') mask = np.transpose(mask, (1, 0, 2)) # ref_feature_points, ref_features_img = q2.harris_and_nms(frame_list[0], nms_window=10) # ref_feature_points, _ = filter_points_not_in_mask(ref_feature_points, mask) orig_ref_points = list() has_orig = False ref_frame_points_lists = list() seq_frame_points_lists = list() for i in range(1, len(frame_list)): ref_points, matched_points = perform_q6(frame_list[0], frame_list[i], mask, ssd_win=20, search_win=35, nms_window=35) if has_orig is False: orig_ref_points = ref_points orig_ref_points, _ = filter_points_not_in_mask(orig_ref_points, mask) has_orig = True ref_frame_points_lists.append(ref_points) seq_frame_points_lists.append(matched_points) orig_ref_points = _filter_points_not_in_points(orig_ref_points, ref_points) final_seq_points_lists = list() final_seq_points_lists.append(orig_ref_points) for i in range(len(ref_frame_points_lists)): seq_points_list = list() for ref_point in orig_ref_points: index = ref_frame_points_lists[i].index(ref_point) seq_points_list.append((seq_frame_points_lists[i])[index]) final_seq_points_lists.append(seq_points_list) marked_frame_list = list() i = 0 for point_list in final_seq_points_lists: f = frame_list[i].copy() marked_frame = q3.mark_points(f, point_list[0:10]) marked_frame_list.append(marked_frame) i += 1 marked_frame_list = utils.rotate_frames(marked_frame_list) # Flip horizontal new_frame_list = list() for image in marked_frame_list: image = np.flip(image, 1) new_frame_list.append(image) final = utils.hstack_frames(new_frame_list, reverse=False) cv.imwrite(utils.get_pwd() + "/q6" + ".jpg", final)
def stabilize_frames(frame_list, frames_transformations_list, save_frames=False): # Initialize stabilized_frames = list() num_of_frames = len(frame_list) # Clean output directories pwd = utils.get_pwd() images_dir_path = pwd + '/our_data/q9_frames/' stab_images_dir_path = pwd + '/our_data/q9_frames_stab/' if save_frames: clean_output_directories(images_dir_path, stab_images_dir_path) # Transform frames for i in range(num_of_frames): a, b = frames_transformations_list[i] # print("Transformation matrices for frame " + str(i)) # print(a) # print(b) frame = frame_list[i] stabilized_frame = q5.stabilize_image(frame, a, b) stabilized_frames.append(stabilized_frame) # Save frames to output folders if save_frames: utils.video_save_frame(frame, pwd, 'q9_frames', i) utils.video_save_frame(stabilized_frame, pwd, 'q9_frames_stab', i) print("Stabilized frame " + str(i)) return stabilized_frames
def perform(frames, search_window, ssd_window, nms_window): mask = cv.imread(utils.get_pwd() + '/our_data/masked_frames/0.jpg') mask = np.transpose(mask, (1, 0, 2)) transformations = list() i = 0 for frame in frames: print("frame " + str(i)) ref_points, seq_points = q6.perform_q6(frames[0], frame, mask, search_win=search_window, ssd_win=ssd_window, nms_window=nms_window) if len(ref_points) < 3: ref_points, seq_points = q6.perform_q6(frames[0], frame, mask, search_win=2 * search_window, ssd_win=ssd_window, nms_window=nms_window) transformations.append(q7.calc_transform_ransac( ref_points, seq_points)) i += 1 stabilized_images = q5.stabilize_frames(frames, transformations) return stabilized_images
def perform(frame_list): frames_with_features = list() indices = [0, 3, 5] frame_list = [frame_list[x] for x in indices] for frame in frame_list: features, frame_after_harris = harris_and_nms(frame, nms_window=35) frames_with_features.append(frame_after_harris) rframes = utils.rotate_frames(frames_with_features) stacked_frames = utils.hstack_frames(rframes, reverse=True) cv.imwrite(utils.get_pwd() + "/q2" + ".jpg", stacked_frames)
def perform(frames): iml = list() frames_points = utils.get_frames_points() for i in range(len(frames)): frame = frames[i] points = frames_points[i] marked_frame = mark_points(frame, points) iml.append(marked_frame) iml = utils.rotate_frames(iml) iml = utils.hstack_frames(iml, reverse=True) cv.imwrite(utils.get_pwd() + "/q3" + ".jpg", iml)
def perform(frames, transformations): stabilized_images = list() for i in range(len(frames)): frame = frames[i] a, b = transformations[i] stabilized_image = stabilize_image_cv(frame, a, b) stabilized_images.append(stabilized_image) stabilized_images = utils.rotate_frames(stabilized_images) new_stab_list = list() for image in stabilized_images: image = np.flip(image, 1) new_stab_list.append(image) stabilized_images = utils.hstack_frames(new_stab_list, reverse=False) cv2.imwrite(utils.get_pwd() + "/q5" + ".jpg", stabilized_images)