فهرست منبع

Alle regels kleiner of gelijk aan 80 gemaakt voor mr. Kroes
Imports opgefirst

Gijs van der Voort 14 سال پیش
والد
کامیت
44ce5bccf1
3فایلهای تغییر یافته به همراه28 افزوده شده و 32 حذف شده
  1. 1 1
      src/GrayscaleImage.py
  2. 22 25
      src/LetterCropper.py
  3. 5 6
      src/LetterCropperTest.py

+ 1 - 1
src/GrayscaleImage.py

@@ -1,4 +1,4 @@
-from pylab import *
+from pylab import imshow, imread, show
 
 class GrayscaleImage:
 

+ 22 - 25
src/LetterCropper.py

@@ -1,44 +1,41 @@
-from pylab import *
+from Rectangle import Rectangle
 
 class LetterCropper:
 
-    THRESHOLD = 0.5
-
-    def __init__(self, image_path):
-        self.set_image(image_path)
+    def __init__(self, image, threshold = 0.9):
+        self.set_image(image)
+        self.set_threshold(threshold)
+        
+    def set_image(self, image):
+        self.image = image
         
-    def set_image(self, image_path):
-        self.source_image = imread(image_path)
+    def set_threshold(self, threshold):
+        self.threshold = threshold
                 
     def get_cropped_letter(self):
-        self.convert_image_to_grayscale()
         self.determine_letter_bounds()
-        self.crop_image()
-        return self.cropped_letter
-
-    def convert_image_to_grayscale(self):
-        self.cropped_letter = self.source_image.sum(axis=2) / 3
+        self.image.crop(self.letter_bounds)
+        return self.image
 
     def determine_letter_bounds(self):
-        image_width = len(self.cropped_letter[0])
-        image_height = len(self.cropped_letter)
     
-        min_x = image_width
+        min_x = self.image.width
         max_x = 0
-        min_y = image_height
+        min_y = self.image.height
         max_y = 0
 
-        for y in xrange(image_height):
-            for x in xrange(image_width):
-                if self.cropped_letter[y, x] < self.THRESHOLD:
+        for y in xrange(self.image.height):
+            for x in xrange(self.image.width):
+                if self.image[y, x] < self.threshold:
                     if x < min_x: min_x = x
                     if y < min_y: min_y = y
                     if x > max_x: max_x = x
                     if y > max_y: max_y = y
         
-        self.letter_bounds = (min_x, min_y, max_x, max_y)
-        
-    def crop_image(self):
-        self.cropped_letter = self.cropped_letter[self.letter_bounds[1] : self.letter_bounds[3], 
-                                                  self.letter_bounds[0] : self.letter_bounds[2]]
+        self.letter_bounds = Rectangle(
+            min_x, 
+            min_y, 
+            max_x - min_x ,
+            max_y - min_y
+        )
 

+ 5 - 6
src/LetterCropperTest.py

@@ -1,11 +1,10 @@
-from pylab import *
 from LetterCropper import LetterCropper
+from GrayscaleImage import GrayscaleImage
 
-letter_cropper = LetterCropper("../images/test.png")
-cropped_letter = letter_cropper.get_cropped_letter()
+image = GrayscaleImage("../images/test.png")
 
-imshow(cropped_letter, cmap="gray")
-
-show()
+cropper = LetterCropper(image)
 
+cropped_letter = cropper.get_cropped_letter()
 
+cropped_letter.show()