def resize(self): """Resize the image to a fixed height.""" if self.height == None: return h, w = self.data.shape GrayscaleImage.resize(self, (self.height, self.height * w / h))
def __init__(self, image=None, data=None, height=None, blur=1.1): if image != None: GrayscaleImage.__init__(self, data=deepcopy(image.data)) elif data != None: GrayscaleImage.__init__(self, data=deepcopy(data)) self.height = height self.resize() self.blur = blur self.gaussian_filter()
def load_characters(neighbours, blur_scale, verbose=0): chars_file = 'characters_%s_%s.dat' % (blur_scale, neighbours) if exists(chars_file): print 'Loading characters...' chars = fload(chars_file) else: print 'Going to generate character objects...' chars = [] for char in sorted(listdir(IMAGES_FOLDER)): count = 0 for image in sorted(listdir(IMAGES_FOLDER + char)): image = GrayscaleImage(IMAGES_FOLDER + char + '/' + image) norm = NormalizedCharacterImage(image, blur=blur_scale, \ height=NORMALIZED_HEIGHT) character = Character(char, [], norm) character.get_single_cell_feature_vector(neighbours) chars.append(character) count += 1 if verbose: print 'Loaded character %s %d times' % (char, count) if verbose: print 'Saving characters...' fdump(chars, chars_file) return chars
def xml_to_LicensePlate(filename, save_character=None): plate = GrayscaleImage('../images/Images/%s.jpg' % filename) dom = parse('../images/Infos/%s.info' % filename) country = '' result = [] version = get_node(dom, "current-version") infos = by_tag(dom, "info") for info in infos: if not version == get_node(info, "version"): continue country = get_node(info, "identification-letters") temp = by_tag(info, "characters") if not temp: # no characters where found in the file break characters = temp[0].childNodes for i, char in enumerate(characters): if not char.nodeName == "character": continue value = get_node(char, "char") corners = get_corners(char) if not len(corners) == 8: break data = retrieve_data(plate, corners) image = NormalizedCharacterImage(data=data) result.append(Character(value, corners, image, filename)) if save_character: character_image = GrayscaleImage(data=data) path = IMAGES_FOLDER + value image_path = "%s/%d_%s.jpg" % (path, i, filename.split('/')[-1]) if not exists(path): mkdir(path) if not exists(image_path): character_image.save(image_path) return LicensePlate(country, result)
#!/usr/bin/python from ia.ocr.licenseplates.src import GrayscaleImage, NormalizedCharacterImage image = GrayscaleImage("../images/test10.png") normalized_character_image = NormalizedCharacterImage(image) normalized_character_image.show()
#!/usr/bin/python from ia.ocr.licenseplates.src import LocalBinaryPatternizer, GrayscaleImage image = GrayscaleImage( "/home/ivan/dev/pydev/lab/labtrans/plotter/data/cam/1372180045710-ocr.jpg") lbp = LocalBinaryPatternizer(image) histograms = lbp.create_features_vector() print histograms
def get_filtered_copy(self, image): """Apply a gaussian blur to an image, to suppress noise.""" image = gaussian_filter(image.data, self.scale) return GrayscaleImage(None, image)
print 'Usage: python %s NEIGHBOURS BLUR_SCALE COUNT' % argv[0] exit(1) neighbours = int(argv[1]) blur_scale = float(argv[2]) count = int(argv[3]) print 'Loading %d characters...' % count chars = [] i = 0 br = False for value in sorted(listdir(IMAGES_FOLDER)): for image in sorted(listdir(IMAGES_FOLDER + value)): f = IMAGES_FOLDER + value + '/' + image image = GrayscaleImage(f) char = Character(value, [], image) chars.append(char) i += 1 if i == count: br = True break if br: break # Load classifier (run create_classifier.py first) classifier = load_classifier(neighbours, blur_scale, verbose=1) # Measure the time it takes to recognize <count> characters