def visualize(self, image, state, segmentation=None): self.ax.cla() self.ax.imshow(image) if segmentation is not None: self.ax.imshow(segmentation, alpha=0.5) if isinstance(state, (OrderedDict, dict)): boxes = [v for k, v in state.items()] else: boxes = (state,) for i, box in enumerate(boxes, start=1): col = _tracker_disp_colors[i] col = [float(c) / 255.0 for c in col] rect = patches.Rectangle((box[0], box[1]), box[2], box[3], linewidth=1, edgecolor=col, facecolor='none') self.ax.add_patch(rect) if getattr(self, 'gt_state', None) is not None: gt_state = self.gt_state rect = patches.Rectangle((gt_state[0], gt_state[1]), gt_state[2], gt_state[3], linewidth=1, edgecolor='g', facecolor='none') self.ax.add_patch(rect) self.ax.set_axis_off() self.ax.axis('equal') draw_figure(self.fig) if self.pause_mode: keypress = False while not keypress: keypress = plt.waitforbuttonpress()
def show_image(self, im, plot_name=None, ax=None): if isinstance(im, torch.Tensor): im = torch_to_numpy(im) # plot_id = sum([ord(x) for x in list(plot_name)]) if ax is None: plot_fig_name = 'debug_fig_' + plot_name plot_ax_name = 'debug_ax_' + plot_name if not hasattr(self, plot_fig_name): fig, ax = plt.subplots(1) setattr(self, plot_fig_name, fig) setattr(self, plot_ax_name, ax) plt.tight_layout() ax.set_title(plot_name) else: fig = getattr(self, plot_fig_name, None) ax = getattr(self, plot_ax_name, None) ax.cla() ax.imshow(im) ax.set_axis_off() ax.axis('equal') ax.set_title(plot_name) draw_figure(fig)
def visualize(self, image, state): self.ax.cla() self.ax.imshow(image) rect = patches.Rectangle((state[0], state[1]), state[2], state[3], linewidth=1, edgecolor='r', facecolor='none') self.ax.add_patch(rect) if hasattr(self, 'gt_state') and False: gt_state = self.gt_state rect = patches.Rectangle((gt_state[0], gt_state[1]), gt_state[2], gt_state[3], linewidth=1, edgecolor='g', facecolor='none') self.ax.add_patch(rect) self.ax.set_axis_off() self.ax.axis('equal') draw_figure(self.fig) if self.pause_mode: keypress = False while not keypress: keypress = plt.waitforbuttonpress()
def show(self, image, bb_list, trackers, gt=None): self.ax.cla() self.ax.imshow(image) # Draw rects rect_handles = [] for i, bb in enumerate(bb_list): rect = patches.Rectangle( (bb[0], bb[1]), bb[2], bb[3], linewidth=1, edgecolor=self.plot_draw_styles[i]['color'], facecolor='none') self.ax.add_patch(rect) rect_handles.append( patches.Rectangle((bb[0], bb[1]), bb[2], bb[3], linewidth=1, edgecolor=self.plot_draw_styles[i]['color'], facecolor=self.plot_draw_styles[i]['color'], label=trackers[i])) if gt is not None: rect = patches.Rectangle((gt[0], gt[1]), gt[2], gt[3], linewidth=2, edgecolor='g', facecolor='none') self.ax.add_patch(rect) rect_handles.append(rect) self.ax.set_axis_off() self.ax.axis('equal') plt.legend(handles=rect_handles, loc=4, borderaxespad=0.) mode = 'manual' if self.pause_mode else 'auto ' speed = self._get_speed() self.fig.suptitle('Sequence: {} Mode: {} Speed: {:d}x'.format( self.sequence_name, mode, speed), fontsize=14) draw_figure(self.fig)
def visualize(self, image, state, *var): self.ax.cla() self.ax.imshow(image) if (state[2] != 0 and state[3] != 0): self.ax.text(10, 30, 'FOUND', fontsize=14, bbox=dict(facecolor='green', alpha=0.2)) else: self.ax.text(10, 30, 'NOT FOUND', fontsize=14, bbox=dict(facecolor='red', alpha=0.2)) pass if len(var) == 0: rect = patches.Rectangle((state[0], state[1]), state[2], state[3], linewidth=1, edgecolor='r', facecolor='none') self.ax.add_patch(rect) if len(var) > 0: #state_rgb, state_depth, provided state_rgb = var[0] state_depth = var[1] #draw one dot for the center of state_rgb # self.ax.plot(state_rgb[0]+state_rgb[2]/2, state_rgb[1]+state_rgb[3]/2,'ro') # self.ax.plot(state_depth[0]+state_depth[2]/2, state_depth[1]+state_depth[3]/2, 'bo') # self.ax.plot(state[0]+state[2]/2, state[1]+state[3]/2,'wo') #another dot for the center of state_depth # rect_rgb= patches.Rectangle((state_rgb[0], state_rgb[1]), state_rgb[2], state_rgb[3], linewidth=2, edgecolor='r', facecolor='none') # self.ax.add_patch(rect_rgb) rect_depth = patches.Rectangle((state_depth[0], state_depth[1]), state_depth[2], state_depth[3], linewidth=2, edgecolor='b', facecolor='none') self.ax.add_patch(rect_depth) rect = patches.Rectangle((state[0], state[1]), state[2], state[3], linewidth=1, edgecolor='w', facecolor='none') self.ax.add_patch(rect) #print(['var', var]) #['var', (tensor([263.5000, 266.5000]), tensor([263.5000, 266.5000]), tensor([263.6045, 271.1568]))] if hasattr(self, 'gt_state') and True: gt_state = self.gt_state self.ax.plot(gt_state[0] + gt_state[2] / 2, gt_state[1] + gt_state[3] / 2, 'go') rect = patches.Rectangle((gt_state[0], gt_state[1]), gt_state[2], gt_state[3], linewidth=2, edgecolor='g', facecolor='none') self.ax.add_patch(rect) self.ax.set_axis_off() self.ax.axis('equal') draw_figure(self.fig) if hasattr(self, 'ind_frame'): if os.path.exists('./tracking_results/imgs'): self.fig.savefig('./tracking_results/imgs/img_%d.png' % self.ind_frame) if self.pause_mode: keypress = False while not keypress: keypress = plt.waitforbuttonpress()