def draw_p_frame(frame, flow, base_bboxes, interp=interp_linear, color=(0, 255, 0)): frame = draw_flow(frame, flow) interp_bboxes = interp(base_bboxes, flow, frame) frame = draw_bboxes(frame, interp_bboxes, color=color) return frame
def save_label(frame, label, index, output_folder, dense_flow=None, annotate=False): frame_filename = FRAME_LABEL_FORMAT.format(output_folder, int(index), label) os.makedirs(os.path.dirname(frame_filename), exist_ok=True) cv2.imwrite(frame_filename, frame) if dense_flow is not None: with open(FRAME_FLOW_FORMAT.format(output_folder, int(index), label), "+wb") as flow_file: pickle.dump(dense_flow, flow_file) if annotate: cv2.imwrite(FRAME_LABEL_ANNOTATION.format(output_folder, int(index)), flow.draw_flow(frame, dense_flow, step=32))
def draw_histogram(i, frame, flow, bboxes, prefix="graph"): frame_rows = frame.shape[0] frame_cols = frame.shape[1] assert (frame.shape[2] == 3) rows = flow.shape[0] cols = flow.shape[1] assert (flow.shape[2] == 2) flow_index = np.asarray(tuple(np.ndindex((rows, cols)))) index_rate = np.asarray((frame_rows // rows, frame_cols // cols)) frame_index = flow_index * index_rate + (index_rate // 2) frame = draw_flow(frame, flow) plot_bbox = plot(flow, frame, flow_index, frame_index) for bbox in bboxes.itertuples(): graph = os.path.join("graph", prefix, f"{prefix}_{i}_{bbox.name}{bbox.Index}.jpg") plot_bbox(graph, bbox)
def draw_annotate(frame, index, pos, flow, bboxes): frame = draw_flow(frame, flow[index]) if index < bboxes.size: return draw_bboxes(frame, bboxes[pos]) else: return draw_none(frame, index)
def draw_i_frame(frame, flow, bboxes, color=(0, 255, 0)): frame = draw_flow(frame, flow) frame = draw_bboxes(frame, bboxes, color=color) return frame