Как загрузить несколько картинок в массив - PullRequest
0 голосов
/ 03 июля 2019

Я хочу загрузить несколько изображений в массиве.Я попробовал это с библиотекой Pillow, и я использовал этот код:

image_parrot = Image.open("picturesready\\parrot\\" + photos_parrot[i]).convert("RGB")
image_numpy_parrot = numpy.append(image_numpy_parrot , numpy.asarray(image_parrot))

Но если я использую метод shape из Numpy, то это только одно измерение, и я не думаю, что смогу восстановитьих.

Кто-нибудь знал, как это сделать, чтобы я мог использовать этот массив?Спасибо!

1 Ответ

0 голосов
/ 03 июля 2019

Если я правильно понимаю, вы хотите создать 1-D массив изображений попугая, где каждый элемент массива представляет собой N-D массив формы (3, n_pix_wide, n_pix_high). Чтобы создать каждый элемент, сделайте что-то вроде:

#! /user/bin/env python
from PIL import Image
import numpy as np

im = Image.open('/Users/medley/Downloads/parrot.jpg', 'r').convert('RGB')
width, height = im.size

print(width, height)

rgb = np.ndarray(shape=(3, width, height))
print(rgb.shape)
for x in range(width):
    for y in range(height):
        r, g, b = im.getpixel((x, y))
        rgb[0, x, y] = r
        rgb[1, x, y] = g
        rgb[2, x, y] = b

print(rgb)
print(rgb.shape)

Затем вы можете превратить это в функцию, получить возвращаемое значение и добавить его к вашему 1-D массиву изображений. Как это

#! /user/bin/env python
from PIL import Image
import numpy as np

def get_rgb_array(image_path):
    im = Image.open(image_path, 'r').convert('RGB')
    width, height = im.size
    rgb = np.ndarray(shape=(3, width, height))
    for x in range(width):
        for y in range(height):
            r, g, b = im.getpixel((x, y))
            rgb[0, x, y] = r
            rgb[1, x, y] = g
            rgb[2, x, y] = b
    return rgb

images = ['parrot1.jpg', 'parrot2.jpg']
rgb_images = []
for path in images:
    print("Analyzing {}".format(path))
    rgb = get_rgb_array(path)
    rgb_images.append(rgb)
    _, width, height = rgb.shape
    print("{} was {} wide and {} tall".format(path, width, height))

print(rgb_images)

Поскольку вы не указали размеры массива, который вы хотите создать, я просто добавил каждый массив (3, n_pix_width, n_pix_high) в список с именем rgb_images

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...