Я действительно запутался в этом аспекте. Каждый из квадратов на изображении содержит количество пикселей, где некоторые из квадратов больше, например, один квадрат может иметь ширину 9 и высоту 8, тогда как другой имеет ширину 7 и высоту 8. Что Я пытаюсь сделать, это создать меньшее изображение из этого исходного изображения, где каждый квадрат представляет пиксель, и все пиксели будут иметь одинаковый размер.
Я сделал это для изображения в оттенках серого, но, к сожалению, я получил неправильный результат, то есть полученное изображение не является точной копией входного изображения
Входное изображение
Выходное изображение
Код для изображения в оттенках серого
from PIL import Image
import numpy as np
name1 = raw_input("What is the name of the .png file you want to open? ")
filename1 = "%s.png" % name1
img = Image.open(filename1).convert('L') # convert image to 8-bit grayscale
WIDTH, HEIGHT = img.size
a = list(img.getdata()) # convert image data to a list of integers
# convert that to 2D list (list of lists of integers)
a = np.array ([a[offset:offset+WIDTH] for offset in range(0, WIDTH*HEIGHT, WIDTH)])
print " "
print "Intial array from image:" #print as array
print " "
print a
rows_mask = np.insert(np.diff(a[:, 0]).astype(np.bool), 0, True)
columns_mask = np.insert(np.diff(a[0]).astype(np.bool), 0, True)
b = a[np.ix_(rows_mask, columns_mask)]
print " "
print "Subarray from Image:" #print as array
print " "
print b
print " "
print "Subarray from Image (clearer format):" #print as array
print " "
for row in b: #print as a table like format
print(' '.join('{:3}'.format(value) for value in row))
img = Image.fromarray(b, mode='L')
img.save("chocolate.png")
#print np.mean(b) #finding mean