Commit 2c1bcb75 authored by unknown's avatar unknown

Made letterCropper non destructive on source image, created a new test

which combines all the tests
parent be937661
from copy import deepcopy
from Rectangle import Rectangle from Rectangle import Rectangle
class LetterCropper: class LetterCropper:
def __init__(self, image, threshold = 0.9): def __init__(self, image, threshold = 0.9):
self.set_image(image) self.source_image = image
self.set_threshold(threshold)
def set_image(self, image):
self.image = image
def set_threshold(self, threshold):
self.threshold = threshold self.threshold = threshold
def get_cropped_letter(self): def get_cropped_letter(self):
self.determine_letter_bounds() self.determine_letter_bounds()
self.image.crop(self.letter_bounds) self.result_image = deepcopy(self.source_image)
return self.image self.result_image.crop(self.letter_bounds)
return self.result_image
def determine_letter_bounds(self): def determine_letter_bounds(self):
min_x = self.source_image.width
min_x = self.image.width
max_x = 0 max_x = 0
min_y = self.image.height min_y = self.source_image.height
max_y = 0 max_y = 0
for y in xrange(self.image.height): for y, x, value in self.source_image:
for x in xrange(self.image.width): if value < self.threshold:
if self.image[y, x] < self.threshold: if x < min_x: min_x = x
if x < min_x: min_x = x if y < min_y: min_y = y
if y < min_y: min_y = y if x > max_x: max_x = x
if x > max_x: max_x = x if y > max_y: max_y = y
if y > max_y: max_y = y
self.letter_bounds = Rectangle( self.letter_bounds = Rectangle(
min_x, min_x,
min_y, min_y,
max_x - min_x , max_x - min_x ,
max_y - min_y max_y - min_y
) )
\ No newline at end of file
from GrayscaleImage import GrayscaleImage from GrayscaleImage import GrayscaleImage
from LocalBinaryPatternizer import LocalBinaryPatternizer from LocalBinaryPatternizer import LocalBinaryPatternizer
from LetterCropper import LetterCropper
from matplotlib.pyplot import imshow, subplot, show, axis from matplotlib.pyplot import imshow, subplot, show, axis
image = GrayscaleImage("../images/test.png") image = GrayscaleImage("../images/test.png")
lbp = LocalBinaryPatternizer(image)
lbp = LocalBinaryPatternizer(image)
feature_vector = lbp.create_features_vector() feature_vector = lbp.create_features_vector()
feature_vector /= 255 # Prepare for displaying -> 0 - 255 -> 0 - 1 feature_vector /= 255 # Prepare for displaying -> 0 - 255 -> 0 - 1
......
from GrayscaleImage import GrayscaleImage
from LocalBinaryPatternizer import LocalBinaryPatternizer
from LetterCropper import LetterCropper
from matplotlib.pyplot import imshow, subplot, show, axis
image = GrayscaleImage("../images/test.png")
cropper = LetterCropper(image)
cropped_letter = cropper.get_cropped_letter()
lbp = LocalBinaryPatternizer(cropped_letter)
feature_vector = lbp.create_features_vector()
feature_vector /= 255 # Prepare for displaying -> 0 - 255 -> 0 - 1
subplot(121)
imshow(image.data, cmap='gray')
subplot(122)
imshow(feature_vector, cmap='gray')
axis('off')
show()
\ No newline at end of file
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment