Python PIL (Pillow): эффективно конвертировать список изображений в np.array? - PullRequest
0 голосов

Я хочу эффективно преобразовать список изображений в np.array.

Мне нужно обработать некоторые изображения jpg, прочитанные с помощью PIL.Image.open(img_path), и мне нужно обработать каждое из них, после чего я хочу поместитьвсе они в список, а затем полностью преобразовать его в np.array нужной мне формы, (N,H,W,C), что означает number of img, height, width, channel соответственно.

Мои попытки:

all_img = []

for filename in all_filename_of_img[:100]:
    // process each img

    // then append each into the list
    all_img.append(img)

all_np_img = np.arrray(all_img, dtype=np.array)

с ошибкой:

Traceback (most recent call last):
  File ".../playground.py", line 39, in <module>
    all_np_img = np.array(all_img, dtype=np.array)
TypeError: data type not understood

Если я сначала конвертирую каждое img внутри цикла for в img = np.asarray(img), тогда сделаю all_img.append(img), будет ли это правильноспособ

Ответы [ 2 ]

0 голосов
/ 13 июня 2018

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

pics = list()
for filename in all_filename_of_img[:100]:
    img = Image.open(filename)
    pics.append(img)

np.vstack(pics)
0 голосов
/ 13 июня 2018

Существует функция numpy stack, которую вы можете использовать в этом случае:

all_np_img = np.stack(all_img)
...