Przeglądaj źródła

Crop classes afgemaakt en test toegevoegd

Gijs van der Voort 14 lat temu
rodzic
commit
e1a30839a8
2 zmienionych plików z 50 dodań i 30 usunięć
  1. 39 30
      src/crop.py
  2. 11 0
      src/crop_test.py

+ 39 - 30
src/crop.py

@@ -1,36 +1,45 @@
 from PIL import Image
-from Pylab import *
-from LBP import domain_iterator
+from pylab import *
 
-THRESHOLD = 0.5
+class LetterCropper:
 
-im = Image.open('../.jpg')
-im = Image.convert('L', im)
+    THRESHOLD = 0.5
 
-outer_bounds = get_outer_bounds()
-
-im.crop(outer_bounds)
-
-imshow(im)
-
-show()
-
-def get_outer_bound():
-    min_x = len(im[0])
-    max_x = 0
-    min_y = len(im)
-    max_y = 0
-
-    for y in xrange(len(im)):
-        for x in xrange(len(im[0])):
-            if im[y, x] > 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
-    return (min_x, min_y, max_x, max_y)
-            
+    def __init__(self, image_path):
+        self.set_image(image_path)
         
+    def set_image(self, image_path):
+        self.source_image = imread(image_path)
+                
+    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
+
+    def determine_letter_bounds(self):
+        image_width = len(self.cropped_letter[0])
+        image_height = len(self.cropped_letter)
     
-    
-    
+        min_x = image_width
+        max_x = 0
+        min_y = 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:
+                    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]]
+

+ 11 - 0
src/crop_test.py

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