def __init__(self, rule_base='rule_base.txt'): fsets = {} rules = {} try: with open(rule_base, 'r') as f: while True: line = f.readline() if not line or not line.strip('\n'): break line = line.strip('\n') name, shape, pts = line.split('\t') pts = [pt.split(',') for pt in pts.split(' ')] pts = [(float(x), float(y)) for (x, y) in pts] fsets[name] = fset_routes[shape](name, *pts) while True: line = f.readline() if not line: break name, rule = line.strip('\n').split('\t') rules[name] = rule except: raise self.inferencer = Inferencer() self.inferencer.add_fsets(fsets.values()) self.inferencer.add_rules(rules.values())
class ShapeRecognizer(object): def __init__(self, rule_base='rule_base.txt'): fsets = {} rules = {} try: with open(rule_base, 'r') as f: while True: line = f.readline() if not line or not line.strip('\n'): break line = line.strip('\n') name, shape, pts = line.split('\t') pts = [pt.split(',') for pt in pts.split(' ')] pts = [(float(x), float(y)) for (x, y) in pts] fsets[name] = fset_routes[shape](name, *pts) while True: line = f.readline() if not line: break name, rule = line.strip('\n').split('\t') rules[name] = rule except: raise self.inferencer = Inferencer() self.inferencer.add_fsets(fsets.values()) self.inferencer.add_rules(rules.values()) def recognize(self, img_file, multi=False): inputs = process_image(img_file, multi) result = self.inferencer.evaluate(inputs) return result['Shape']