Numpy's resize()
не делает то, что вы думаете, что делает.Он не пересчитывает массив по своим осям.
Скажем, ваш исходный массив выглядит следующим образом:
array([
[11, 12, 13, 14, 15],
[21, 22, 23, 24, 25]
])
Тогда после a = np.resize(a, (3, 3))
результат будет выглядеть следующим образом:
array([
[11, 12, 13],
[14, 15, 21],
[22, 23, 24]
])
Как видите, исходный первый ряд переходит во второй ряд и так далее, в то время как последний пиксель просто исчезает.Это происходит потому, что np.resize()
фактически не меняет никаких данных.Он просто назначает другую форму данным, которые существуют в памяти, в то время как исходные строки остаются в последовательном порядке друг к другу (или столбцы, если вы использовали массив в стиле Фортрана).
То, что вы на самом деле хотите, это Подушкаresize()
:
newimg = Image.fromarray(imtopix)
newimg = newimg.resize((200, 200), resample=Image.BILINEAR)
Выберите метод повторной выборки, подходящий для вашего варианта использования.