| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980 |
- from pylab import imshow, imread, show
- from scipy.misc import imresize
- from matplotlib.pyplot import hist
- from scipy.misc import imresize, imsave
- class GrayscaleImage:
- def __init__(self, image_path = None, data = None):
- if image_path:
- self.data = imread(image_path)
-
- extension = image_path.split('.',3)[-1]
-
- if extension == "jpg":
- self.data = self.data[::-1]
-
- self.convert_to_grayscale()
- elif data:
- self.data = data
-
- def __iter__(self):
- self.__i_x = -1
- self.__i_y = 0
- return self
-
- def next(self):
- self.__i_x += 1
- if self.__i_x == self.width:
- self.__i_x = 0
- self.__i_y += 1
- if self.__i_y == self.height:
- raise StopIteration
-
- return self.__i_y, self.__i_x, self[self.__i_y, self.__i_x]
-
- def __getitem__(self, position):
- return self.data[position]
-
- def convert_to_grayscale(self):
- if len(self.data.shape) > 2:
- self.data = self.data[:,:,:3].sum(axis=2) / 3
-
- def crop(self, rectangle):
- self.data = self.data[rectangle.y : rectangle.y + rectangle.height,
- rectangle.x : rectangle.x + rectangle.width]
-
- def show(self):
- imshow(self.data, cmap="gray")
- #show()
-
- def make_histogram(self):
- return hist(self.data)
-
- # size is of type tuple of integers (DEFAULT = (50, 50))
- def resize(self, size):
- print size
-
- def resize(self, size): # size is of type float
- self.data = imresize(self.data, size)
-
- def get_shape(self):
- return self.data.shape
-
- shape = property(get_shape)
-
- def get_width(self):
- return self.get_shape()[1]
-
- width = property(get_width)
-
- def get_height(self):
- return self.get_shape()[0]
-
- height = property(get_height)
-
- def in_bounds(self, y, x):
- return x >= 0 and x < self.width and y >= 0 and y < self.height
-
- def save(self, path):
- imsave(path, self.data)
|