示例#1
0
    def __init__(self, name, getter, setter, caller):

        Element.__init__(self, name)

        self.__may_set_back = False
        self.__initialized = False

        self.__path = ""

        self.__getter = getter
        self.__setter = setter
        self.__caller = caller
        self.__bind = ""

        self._register_property("bind", TYPE_STRING, self._setp_bind, None,
                                "",
                                doc = "Binds the value to an object property")
        self._register_property("callback", TYPE_STRING,
                                self._setp, self._getp, None,
                                doc = "Callback function")
        self._register_property("help", TYPE_STRING, self._setp, self._getp,
                                "", doc = "Tooltip text")
        self._register_property("label", TYPE_STRING,
                                self._setp_label, self._getp, "",
                                doc = "Description label text")
        self._register_property("enabled", TYPE_BOOL,
                                self._setp_enabled, self._getp, True,
                                doc = "Whether the widget is enabled")
def incorporate(img_path, compo_path, text_path, output_root, params,
                resize_by_height=None, show=False, wait_key=0):
    org = cv2.imread(img_path)

    compos = []
    texts = []

    background = None
    for compo in json.load(open(compo_path, 'r'))['compos']:
        if compo['class'] == 'Background':
            background = compo
            continue
        element = Element((compo['column_min'], compo['row_min'], compo['column_max'], compo['row_max']), compo['class'])
        compos.append(element)
    for text in json.load(open(text_path, 'r'))['compos']:
        element = Element((text['column_min'], text['row_min'], text['column_max'], text['row_max']), 'Text')
        texts.append(element)

    org_resize = resize_img_by_height(org, resize_by_height)
    draw_bounding_box_class(org_resize, compos, show=show, name='ip', wait_key=wait_key)
    draw_bounding_box(org_resize, texts, show=show, name='ocr', wait_key=wait_key)

    compos_merged = reclassify_text_by_ocr(org_resize, compos, texts)
    # compos_merged = merge_redundant_corner(org_resize, compos_merged)
    # draw_bounding_box_class(org_resize, compos_merged, name='text', show=show, wait_key=wait_key)

    # merge words as line
    compos_merged = merge_intersected_compos(org_resize, compos_merged, max_gap=(params['max-word-inline-gap'], 0), merge_class='Text')
    draw_bounding_box_class(org_resize, compos_merged, name='merged line', show=show, wait_key=wait_key)
    # merge lines as paragraph
    compos_merged = merge_intersected_compos(org_resize, compos_merged, max_gap=(0, params['max-line-gap']), merge_class='Text')
    # draw_bounding_box_class(org_resize, compos_merged, name='merged paragraph', show=show)
    # clean compos intersected with paragraphs
    compos_merged = rm_compos_in_text(compos_merged)

    compos_merged = merge_label_with_comp(compos_merged)
    board = draw_bounding_box_class(org_resize, compos_merged, name='merged paragraph', is_return=True, show=show, wait_key=wait_key)

    # draw_bounding_box_non_text(org_resize, compos_merged, org_shape=org.shape, show=show)
    compos_json = save_corners_json(output_root, background, compos_merged, org_resize.shape)
    dissemble_clip_img_fill(pjoin(output_root, 'clips'), org_resize, compos_json)
    cv2.imwrite(pjoin(output_root, 'result.jpg'), board)

    print('Merge Complete and Save to', pjoin(output_root, 'result.jpg'))
    print(time.ctime(), '\n')
示例#3
0
文件: merge.py 项目: carol233/UIED
def incorporate(img_path, compo_path, text_path, output_root, resize_by_height=None, show=False):
    org = cv2.imread(img_path)

    compos = []
    texts = []

    background = None
    for compo in json.load(open(compo_path, 'r'))['compos']:
        if compo['class'] == 'Background':
            background = compo
            continue
        element = Element((compo['column_min'], compo['row_min'], compo['column_max'], compo['row_max']), compo['class'])
        compos.append(element)
    for text in json.load(open(text_path, 'r'))['compos']:
        element = Element((text['column_min'], text['row_min'], text['column_max'], text['row_max']), 'Text')
        texts.append(element)

    # bbox_text = refine_text(org, bbox_text, 20, 10)
    # bbox_text = resize_label(bbox_text, resize_by_height, org.shape[0])

    org_resize = resize_img_by_height(org, resize_by_height)
    draw_bounding_box_class(org_resize, compos, show=show, name='ip')
    draw_bounding_box(org_resize, texts, show=show, name='ocr')

    compos_merged = reclassify_text_by_ocr(org_resize, compos, texts)
    # compos_merged = merge_redundant_corner(org_resize, compos_merged)
    draw_bounding_box_class(org_resize, compos_merged, name='text', show=show)

    # compos_merged = merge_text_line(compos_merged)
    compos_merged = merge_intersected_compos(compos_merged, max_gap=(4, 0))
    draw_bounding_box_class(org_resize, compos_merged, name='merged line', show=show)
    # compos_merged = merge_paragraph(org_resize, compos_merged)
    compos_merged = merge_intersected_compos(compos_merged, max_gap=(0, 1))
    board = draw_bounding_box_class(org_resize, compos_merged, name='merged paragraph', show=show)

    draw_bounding_box_non_text(org_resize, compos_merged, org_shape=org.shape, show=show)
    compos_json = save_corners_json(pjoin(output_root, 'compo.json'), background, compos_merged, org_resize.shape)
    dissemble_clip_img_fill(pjoin(output_root, 'clips'), org_resize, compos_json)
    cv2.imwrite(pjoin(output_root, 'result.jpg'), board)

    print('Merge Complete and Save to', pjoin(output_root, 'result.jpg'))
    print(time.ctime(), '\n')
    if show:
        cv2.destroyAllWindows()
示例#4
0
    def __init__(self, name, parent):

        # the actions and their associated calls
        self.__actions = {}

        # the index path of this target
        self.__index_path = []

        # the parent of this target
        self.__parent = parent

        # the display of this target
        self.__display = parent._get_display()

        # list of watch bindings for being able to unbind the sensor again
        # FIXME: remove eventually :)
        self.__watch_bindings = []

        Element.__init__(self, name)

        self._register_property("event", TYPE_OBJECT, None, self._getp)
        self._register_property("index-path", TYPE_INT, None, self._getp)
        self._register_property("watch", TYPE_LIST, self._setp_watch, None)

        if (parent and not self.is_standalone()):
            self.__index = parent.get_next_child_index()
            self.__index_path = parent.get_index_path()
        else:
            self.__index = -1
            self.__index_path = []

        if (not self.is_standalone()):
            self.add_observer(parent.child_observer)

        if (self.__index != -1): self.__index_path.append(self.__index)
        if (self.__index_path):
            self._setp("index-path", self.__index_path[:])
        else:
            self._setp("index", [])