예제 #1
0
 def __init__(self, image_path) -> None:
     self.threshold = config.getint(config.default_section,
                                    'line_threshold')
     self.low = config.getint(config.default_section, 'canny_threshold_1')
     self.high = config.getint(config.default_section, 'canny_threshold_2')
     self.window_name = "Lines"
     self.processor = ImageProcessor(image_path)
예제 #2
0
    def __init__(self, image_path) -> None:
        self.min = config.getint(config.default_section, 'digit_min_height')
        self.max = config.getint(config.default_section, 'digit_max_height')

        self.t1 = config.getint(config.default_section, 'canny_threshold_1')
        self.t2 = config.getint(config.default_section, 'canny_threshold_2')

        self.window_name = "Size"
        self.processor = ImageProcessor(image_path)
        self.processor.fix_skew_angle()
    def __init__(self):
        self.redis = redis
        self.tokenizer = tokenizer
        self.trigram_repository = trigram_repository

        self.max_wrds = config.getint('grammar', 'max_wrds')
        self.max_msgs = config.getint('grammar', 'max_msgs')

        self.stop_word = config['grammar']['stop_word']
        self.sep = config['grammar']['sep']
        self.endsen = config['grammar']['endsen']
예제 #4
0
    def __init__(self):
        self.redis = redis
        self.tokenizer = tokenizer
        self.trigram_repository = trigram_repository

        self.max_words = config.getint('grammar', 'max_words')
        self.max_messages = config.getint('grammar', 'max_messages')

        self.stop_word = config['grammar']['stop_word']
        self.separator = config['grammar']['separator']
        self.end_sentence = config['grammar']['end_sentence']
예제 #5
0
 def __init__(self):
     self.chain_len = config.getint('grammar', 'chain_len')
     self.stop_word = config['grammar']['stop_word']
     self.endsen = config['grammar']['endsen']
     self.garbage = config['grammar']['garbage']
     # https://core.telegram.org/bots/api#messageentity
     self.garbage_entities = config.getlist('grammar', 'garbage_entities')
예제 #6
0
    def run(self):
        logging.info("Bot started")

        purge_queue_instance = chat_purge_queue.instance(
            self.updater.job_queue)

        self.dispatcher.add_handler(MessageHandler())
        self.dispatcher.add_handler(CommandHandler())
        self.dispatcher.add_handler(
            StatusHandler(chat_purge_queue=purge_queue_instance))

        if config['updates']['mode'] == 'polling':
            self.updater.start_polling()
        elif config['updates']['mode'] == 'webhook':
            key = open(config['updates']['key'],
                       'rb') if config['updates']['key'] is not None else None
            cert = open(
                config['updates']['cert'],
                'rb') if config['updates']['cert'] is not None else None

            self.updater.start_webhook(listen=config['updates']['host'],
                                       port=config.getint('updates', 'port'),
                                       url_path=config['bot']['token'],
                                       key=key,
                                       cert=cert,
                                       webhook_url=config['updates']['url'])

        self.updater.idle()
    def process(self):
        self.fix_skew_angle()

        # edge detection
        edges = self.edges_detection(
            self.base_image,
            config.getint(config.default_section, 'canny_threshold_1'),
            config.getint(config.default_section, 'canny_threshold_2'))
        self.show_image(edges, "7. Normal Edges")

        sorted_boxes = self.digits_bounding_boxes(edges)
        self.show_boxes(self.original_image, sorted_boxes, "11. Aligned boxes")

        self.rois = self.rois_cut(edges, sorted_boxes)
        self.show_rois(self.rois, "12. ROIs")

        if self._debug:
            cv2.waitKey()
    def digits_bounding_boxes(self, edges):
        # contours detection
        contours = self.contours_detection(edges)
        self.show_contours(self.original_image, contours, "8. All contours")
        filtered_contours, bounding_boxes = self.filter_contours(
            contours, config.getint(config.default_section,
                                    'digit_min_height'),
            config.getint(config.default_section, 'digit_max_height'))
        self.show_contours(self.original_image, filtered_contours,
                           "9. Filtered contours")
        self.show_boxes(self.original_image, bounding_boxes,
                        "10. Filtered contours boxes")

        # find aligned boxes
        aligned_boxes = self.max_aligned_boxes(
            bounding_boxes,
            config.getint(config.default_section, 'digit_y_alignment'))
        return self.sorted_boxes(aligned_boxes)
    def fix_skew_angle(self):
        # edge detection
        edges = self.edges_detection(
            self.base_image,
            config.getint(config.default_section, 'canny_threshold_1'),
            config.getint(config.default_section, 'canny_threshold_2'))
        self.show_image(edges, "4. Edges")

        # line detection
        lines = self.lines_detection(
            edges, config.getint(config.default_section, 'line_threshold'))
        self.show_lines(self.original_image, lines, "5. Lines")

        # detect angle
        avg_angle = self.average_angle(lines)

        # skew rotate
        self.original_image = self.rotate(self.original_image, -avg_angle)
        self.base_image = self.grey_out(self.original_image)
        self.show_image(self.original_image, "6. Skew fix")
    def __init__(self, image_path) -> None:
        self._image_path = image_path
        self._debug = config.getboolean(config.default_section, 'debug')

        self.original_image = cv2.imread(self._image_path)
        self.show_image(self.original_image, "1. Original Image")

        self.original_image = self.rotate(
            self.original_image,
            config.getint(config.default_section, 'rotation_deg'))
        self.show_image(self.original_image, "2. Original Image Rotated")

        self.base_image = self.grey_out(self.original_image)
        self.show_image(self.base_image, "3. Gray image")

        self.rois = []
예제 #11
0
 def __init__(self):
     self.chain_length = config.getint('grammar', 'chain_length')
     self.stop_word = config['grammar']['stop_word']
     self.end_sentence = config['grammar']['end_sentence']
     self.garbage_tokens = config['grammar']['all']
예제 #12
0
 def __init__(self, image_path) -> None:
     self.degree = config.getint(config.default_section, 'rotation_deg')
     self.window_name = "Rotation"
     self.processor = ImageProcessor(image_path)
 def __init__(self):
     RedisRepository.__init__(self, source_name='chance:{}')
     self.default_chance = config.getint('bot', 'default_chance')