Если я правильно понимаю, вы хотите создать 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