Конвертировать массив изображений 3 dim в 2 dim - PullRequest
0 голосов
/ 29 мая 2018

Используя этот код:

from scipy import misc
import matplotlib.pyplot as plt

images = data.test.images[0:9]
plt.imshow(images[0].reshape(28 , 28))

print(images[0].shape)

Я строю изображение:

enter image description here

Используя misc из scipy:

face = misc.face()
misc.imsave('face.png', face) # First we need to create the PNG file
face = misc.imread('face.png')

print(face.shape)
plt.imshow(face)

enter image description here

Я строю изображение:

Как преобразовать face в 2-мерное изображение, которое можно построить с помощьюplt.imshow?

Использование:

plt.imshow(face.reshape(768 , 1024))

выдает ошибку:

ValueError                                Traceback (most recent call last)
<ipython-input-104-99fef1cec0d2> in <module>()
      6 plt.imshow(face)
      7 
----> 8 plt.imshow(face.reshape(768 , 1024))

ValueError: cannot reshape array of size 2359296 into shape (768,1024)

Я не пытаюсь преобразовать изображение в оттенки серого, но в 2-мерное вместо3-мерное.

Обновление:

Проверка значения в один пиксель: print(face[0][0]): [121 112 131].Должен ли я взять среднее значение [121 112 131] как часть изменения формы?

Ответы [ 2 ]

0 голосов
/ 29 мая 2018

Этот код работает должным образом:

   def rgb2gray(rgb):
        return np.dot(rgb[...,:3], [0.299, 0.587, 0.114])


    gray = rgb2gray(face)  
    print(gray.shape)

    plt.imshow(gray)

Но цвет искажен.rgb2gray источник: Как я могу преобразовать RGB-изображение в оттенки серого в Python?

Также благодарю за комментарии, помогающие мне прийти к этому.

0 голосов
/ 29 мая 2018

Я не очень понимаю, что вы пытаетесь сделать здесь.Если вы хотите иметь возможность отображать трехмерные данные с imshow, это возможно из коробки.Если вы хотите преобразовать в оттенки серого, проверьте это .В качестве альтернативы, если вы хотите нарезать 3D-набор данных таким образом, чтобы получить 2D-матрицу, посмотрите на this и:

from scipy.misc import face
f = face()
print(f.shape)
print(f[..., 0].shape) # slicing in last dimension
import matplotlib.pyplot as plt
plt.imshow(f[..., 0])
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...