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)
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']
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']
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')
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 = []
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']
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')