def __init__(self, title, size): Screen.__init__(self, title, size) self.base_rgb_image = None self.base_inv_image = None self.base_gray_image = None self.view_mode = BaseImageAnnotator.ViewModeRawData self.view_scale = 1.0 self.view_overlay_opacity = 1.0 self.container_view_buttons = None self.lbl_zoom = None self.btn_zoom_reduce = None self.btn_zoom_increase = None self.btn_zoom_zero = None self.lbl_view_data = None self.btn_view_raw_data = None self.btn_view_inv_data = None self.btn_view_gray_data = None self.lbl_view_clear = None self.btn_view_raw_clear = None self.btn_view_inv_clear = None self.btn_view_gray_clear = None self.container_images = None self.canvas_select = None self.canvas_display = None self.img_main = None
def __init__(self, size, chart_dir, annotation_dir, admin_mode): Screen.__init__(self, "Chart Ground Truth Annotation Interface", size) # load the chart directory info ... self.chart_image_list = ImageInfo.ListChartDirectory(chart_dir, "") print("A total of {0:d} chart images were found".format( len(self.chart_image_list))) self.general_background = (20, 50, 85) self.text_color = (255, 255, 255) self.admin_mode = admin_mode # about the grid .... self.tb_grid_cols = 6 self.tb_grid_rows = 4 self.tb_width = 160 self.tb_height = 120 self.tb_outer_margin = 16 self.tb_inner_margin = 4 self.tb_label_height = 14 # this is approx self.tb_progress_h = 16 self.tb_progress_border = 4 self.tb_col_width = (self.tb_outer_margin + self.tb_width) self.tb_row_height = (self.tb_outer_margin + self.tb_inner_margin * 2 + self.tb_progress_h + self.tb_label_height + self.tb_height) self.elements.back_color = self.general_background self.chart_dir = chart_dir self.annotation_dir = annotation_dir # define here all graphic object references .... # ...for thumbnails .... self.container_thumbnails = None self.thumbnails_images = None self.thumbnails_status = None self.thumbnails_labels = None self.paginator = None # ... right side image options ... self.lbl_page_descriptor = None self.container_image_info = None self.img_display = None self.img_title = None self.btn_label_image = None self.btn_next_image = None self.btn_prev_image = None # ... general ... self.btn_exit = None # ... create them!!! ..... self.create_controllers() # ... load current page data .... self.current_page = None self.selected_element = 0 self.load_page(None, 0)
def prepare_screen(self): if self.wait_mode != ChartImageAnnotator.WaitModeNone: # get delta of time on previous screen ... prepare to count towards this menu delta = self.get_reset_time_delta() # add delta on the corresponding process... if self.wait_mode == ChartImageAnnotator.WaitModeText: self.time_stats.time_text += delta elif self.wait_mode == ChartImageAnnotator.WaitModeLegend: self.time_stats.time_legend += delta elif self.wait_mode == ChartImageAnnotator.WaitModeAxes: self.time_stats.time_axes += delta elif self.wait_mode == ChartImageAnnotator.WaitModeData: self.time_stats.time_data += delta self.wait_mode = ChartImageAnnotator.WaitModeNone # call parent prepare screen ... Screen.prepare_screen(self)
def __init__(self, size, panel_image, panel_info, parent_screen): Screen.__init__(self, "Line Chart Ground Truth Annotation Interface", size) self.panel_image = panel_image self.panel_gray = np.zeros(self.panel_image.shape, self.panel_image.dtype) self.panel_gray[:, :, 0] = cv2.cvtColor(self.panel_image, cv2.COLOR_RGB2GRAY) self.panel_gray[:, :, 1] = self.panel_gray[:, :, 0].copy() self.panel_gray[:, :, 2] = self.panel_gray[:, :, 0].copy() self.panel_info = panel_info if self.panel_info.data is None: # create default Line chart data ... self.data = LineData.CreateDefault(self.panel_info) self.data_changed = True else: # make a copy ... self.data = LineData.Copy(self.panel_info.data) self.data_changed = False self.parent_screen = parent_screen self.general_background = (150, 190, 20) self.text_color = (255, 255, 255) self.elements.back_color = self.general_background self.edition_mode = None self.tempo_line_index = None self.tempo_point_index = None self.tempo_line_values = None self.view_mode = LineChartAnnotator.ViewModeRawData self.view_scale = 1.0 self.label_title = None self.container_view_buttons = None self.lbl_zoom = None self.btn_zoom_reduce = None self.btn_zoom_increase = None self.btn_zoom_zero = None self.btn_view_raw_data = None self.btn_view_gray_data = None self.btn_view_raw_clear = None self.btn_view_gray_clear = None self.container_confirm_buttons = None self.lbl_confirm_message = None self.btn_confirm_cancel = None self.btn_confirm_accept = None self.container_annotation_buttons = None self.lbl_edit_title = None self.btn_edit_number = None self.btn_edit_data = None self.btn_return_accept = None self.btn_return_cancel = None self.container_number_buttons = None self.lbl_number_title = None self.lbl_number_series_title = None self.lbx_number_series_values = None self.btn_number_series_add = None self.btn_number_series_remove = None self.btn_number_return = None self.container_data_buttons = None self.lbl_data_title = None self.lbx_data_series_values = None self.btn_data_series_edit = None self.btn_data_return = None self.container_line_buttons = None self.lbl_line_title = None self.lbl_line_name = None self.lbx_line_points = None self.btn_line_point_edit = None self.btn_line_point_delete = None self.btn_line_point_add = None self.btn_line_return_accept = None self.btn_line_return_cancel = None self.container_images = None self.canvas_display = None self.img_main = None self.create_controllers() # get the view ... self.update_current_view(True)
def __init__(self, size, panel_image, panel_info, parent_screen): Screen.__init__(self, "Chart Legend Ground Truth Annotation Interface", size) self.panel_image = panel_image self.panel_gray = np.zeros(self.panel_image.shape, self.panel_image.dtype) self.panel_gray[:, :, 0] = cv2.cvtColor(self.panel_image, cv2.COLOR_RGB2GRAY) self.panel_gray[:, :, 1] = self.panel_gray[:, :, 0].copy() self.panel_gray[:, :, 2] = self.panel_gray[:, :, 0].copy() self.panel_info = panel_info if self.panel_info.legend is None: # create a new legend info self.legend = LegendInfo( self.panel_info.get_all_text(TextInfo.TypeLegendLabel)) self.data_changed = True else: # make a copy self.legend = LegendInfo.Copy(self.panel_info.legend) self.data_changed = False self.parent_screen = parent_screen self.general_background = (80, 70, 150) self.text_color = (255, 255, 255) self.elements.back_color = self.general_background self.edition_mode = None self.tempo_text_id = None self.view_mode = ChartLegendAnnotator.ViewModeRawData self.view_scale = 1.0 self.label_title = None self.container_view_buttons = None self.lbl_zoom = None self.btn_zoom_reduce = None self.btn_zoom_increase = None self.btn_zoom_zero = None self.btn_view_raw_data = None self.btn_view_gray_data = None self.btn_view_raw_clear = None self.btn_view_gray_clear = None self.container_confirm_buttons = None self.lbl_confirm_message = None self.btn_confirm_cancel = None self.btn_confirm_accept = None self.container_legend_options = None self.lbl_legend_title = None self.lbx_legend_list = None self.btn_legend_edit = None self.btn_legend_delete = None self.btn_return_accept = None self.btn_return_cancel = None self.container_images = None self.canvas_select = None self.canvas_display = None self.img_main = None self.create_controllers() # get the view ... self.update_current_view(True)
def __init__(self, size, panel_image, panel_info, parent_screen, admin_mode): Screen.__init__(self, "Chart Text Ground Truth Annotation Interface", size) self.panel_image = panel_image self.panel_gray = np.zeros(self.panel_image.shape, self.panel_image.dtype) self.panel_gray[:, :, 0] = cv2.cvtColor(self.panel_image, cv2.COLOR_RGB2GRAY) self.panel_gray[:, :, 1] = self.panel_gray[:, :, 0].copy() self.panel_gray[:, :, 2] = self.panel_gray[:, :, 0].copy() self.panel_info = panel_info # working copy ... self.text_regions = [ TextInfo.Copy(text_info) for text_info in self.panel_info.text ] self.parent_screen = parent_screen self.admin_mode = admin_mode self.general_background = (150, 100, 60) self.text_color = (255, 255, 255) self.canvas_colors = { TextInfo.TypeChartTitle: (255, 0, 0), TextInfo.TypeAxisTitle: (0, 255, 0), TextInfo.TypeTickLabel: (0, 0, 255), TextInfo.TypeLegendTitle: (255, 255, 0), TextInfo.TypeLegendLabel: (255, 0, 255), TextInfo.TypeValueLabel: (0, 255, 255), TextInfo.TypeOther: (128, 0, 0), } self.canvas_sel_colors = { TextInfo.TypeChartTitle: (128, 0, 0), TextInfo.TypeAxisTitle: (0, 128, 0), TextInfo.TypeTickLabel: (0, 0, 128), TextInfo.TypeLegendTitle: (128, 128, 0), TextInfo.TypeLegendLabel: (128, 0, 128), TextInfo.TypeValueLabel: (0, 128, 128), TextInfo.TypeOther: (64, 0, 0), } self.elements.back_color = self.general_background self.edition_mode = None self.view_mode = ChartTextAnnotator.ViewModeRawData self.view_scale = 1.0 self.data_changed = False self.tempo_edit_text = None self.label_title = None self.container_view_buttons = None self.lbl_zoom = None self.btn_zoom_reduce = None self.btn_zoom_increase = None self.btn_zoom_zero = None self.btn_view_raw_data = None self.btn_view_gray_data = None self.btn_view_raw_clear = None self.btn_view_gray_clear = None self.container_confirm_buttons = None self.lbl_confirm_message = None self.btn_confirm_cancel = None self.btn_confirm_accept = None self.container_text_options = None self.lbl_text_title = None self.lbx_text_list = None self.btn_text_add = None self.btn_text_edit = None self.btn_text_delete = None self.btn_return_accept = None self.btn_return_cancel = None self.container_edit_options = None self.lbl_edit_title = None self.lbx_edit_type = None self.lbl_edit_text = None self.btn_edit_OCR_0 = None self.btn_edit_OCR_180 = None self.btn_edit_OCR_any = None self.btn_edit_OCR_270 = None self.btn_edit_OCR_90 = None self.txt_edit_text = None self.btn_edit_cancel = None self.btn_edit_accept = None self.container_images = None self.canvas_select = None self.canvas_display = None self.img_main = None self.create_controllers() # get the view ... self.update_current_view(True)