def generate_image(self, num_digits=30, noise=None): if noise: a = np.array(np.random.random_integers(0, 64, (self._height, self._width)), dtype=np.uint8) else: a = np.zeros((self._height, self._width), dtype=np.uint8) im = Image.frombytes('L', (self._width, self._height), a.tobytes()) canvas = ImageDraw(im) for i in range(num_digits): import random x = random.randint(0, self._width - self._char_size) y = random.randint(0, self._height - self._char_size) class_index = random.randint(0, self._num_classes - 1) ch = str(class_index) character_bitmap = self._factory.get_digit_image(ch) character_bitmap = character_bitmap.resize( (self._char_size, self._char_size) ) canvas.bitmap((x, y), character_bitmap, fill=255) return im