обратное изменение формы, дающее разные результаты - PullRequest
0 голосов
/ 11 ноября 2019

Мне нужно изменить размер и затем изменить определенное изображение. Затем я хочу применить обратное изменение формы, которое должно дать исходное изображение, но оно не работает. Пусть у нас будет этот код:

images=[]
image = imread('1.png')
resized = np.resize(image, (320, 440))
images.append(resized)

arr=np.asarray(images)
newArray=arr.astype('float32')

plt.figure(figsize=[5, 5])
reshaped = np.reshape(newArray[0], (320,440))
plt.imshow(reshaped, cmap='gray')
plt.show()

Исходное изображение 1.png:

enter image description here

Измененное изображение, отображаемое plt.show (): enter image description here

Инверсное изображение не похоже на оригинал, может кто-нибудь сказать мне, где проблема? Спасибо.

1 Ответ

1 голос
/ 11 ноября 2019

Редактировать:

После разъяснения похоже, что путаница возникает из np.resize, который не является операцией обработки изображения и не используется для изменения масштаба изображения при сохранении содержимого.

Похоже, что оболочки обработки изображений, такие как imresize, были удалены из библиотеки scipy, и хотя вы в принципе можете использовать пакет scipy.interpolate для воспроизведения функциональности imresize, ярекомендуем использовать pillow или scikit-image

с pillow:

import numpy as np
from PIL import Image
image = Image.open("my_image.jpg")
image.resize((224, 224))
image = np.asarray(image)  # convert to numpy

с sckit-image:

from skimage.transform import resize
image = imread("my_image.jpg")
image = resize(image, (224, 224))

оригинальный ответ

np.reshape будет сначала разбивать элементы, а затем сортировать их по новой заданной форме, теряя при этом множество пространственных связей, как вы видите. Вероятно, что вы действительно хотите сделать, это np.transpose изображение, меняя две оси:

images=[]
image = imread('1.png')
resized = np.resize(image, (320, 440))
images.append(resized)

arr=np.asarray(images)
newArray=arr.astype('float32')

plt.figure(figsize=[5, 5])
transposed = np.transpose(newArray[0])
plt.imshow(transposed, cmap='gray')
plt.show()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...