2017-01-24 6 views
3

На данный момент я пытаюсь запустить ConvNet. Каждое изображение, которое позже питает нейронную сеть, хранится в виде списка. Но список в настоящий момент создан с использованием трех for-loops. Посмотрите:Confused во время изменения массива изображения

im = Image.open(os.path.join(p_input_directory, item)) 
pix = im.load() 

image_representation = [] 

# Get image into byte array 
for color in range(0, 3): 
    for x in range(0, 32): 
     for y in range(0, 32): 
      image_representation.append(pix[x, y][color]) 

Я уверен, что это не самый приятный и эффективный способ. Поскольку я должен придерживаться структуры списка, созданного выше, я подумал об использовании numpy и предоставил альтернативный способ доступа к той же структуре.

from PIL import Image 
import numpy as np 

image = Image.open(os.path.join(p_input_directory, item)) 
image.load() 
image = np.asarray(image, dtype="uint8") 
image = np.reshape(image, 3072) 
# Sth is missing here... 

Но я не знаю, как изменить форму и сцепить image для получения такой же структуры, как указано выше. Может ли кто-нибудь помочь с этим?

+0

Спасибо за ваше решение. Это то, что я ищу. –

ответ

3

Один подход должен были бы перенести ось, которые, по существу, выравнивающую в режиме fortran т.е. обращенно образом -

image = np.asarray(im, dtype="uint8") 
image_representation = image.ravel('F').tolist() 

Для более близкого взгляда к функции имеет вид на numpy.ravel documentation.

 Смежные вопросы

  • Нет связанных вопросов^_^