如何在 Python 中将多个三维数组更改为单个 4 维数组?



我正在尝试使用 python 将多个图像存储在单个 4 维数组中。 如何更改它?

我已经尝试过np.vstack,np.concatenate,np.hstack,如下所示 image_all = np.concatenate([img_3, img_4], axis=0(,但我得到">除连接轴之外的所有输入数组尺寸必须完全匹配"。

我试图为图像创建新的尺寸,但不起作用。我像 img_1 = (1, 428, 640, 3( 一样创建,我确实喜欢所有人,并尝试创建新的 ndarray 但没有成功

假设我有以下尺寸的图像

img_1 = (428, 640, 3)
img_2 = (426, 640, 3)
img_3 = (426, 640, 3)
img_4 = (640, 480, 3)
img_5 = (640, 427, 3)

我希望我的新维度数组是串联的,并且维度为 (5, ?, ? 3(,如下所示 img_all.形状 = (5, ?, ?, 3(

不同形状的 Numpy 数组不能按照您要求的方式组合在一个数组中。但是您可以轻松地将图像大小调整为相同的形状,然后进行组合。你可以像这样使用枕头库:

import numpy as np
from PIL import Image
# List of images to be combined in a single array
images = [img_1, img_2, img_3, img_4, img_5] 
# Common shape
SIZE = (640, 480) # Any size you find suitable
# Convert into pillow images and resize
images_pil = [Image.fromarray(img).resize(SIZE) for img in images]
# Convert back and combine into single array
images_np_arr = np.array([np.array(img) for img in images_pil])

print(images_np_arr.shape) # prints (5, 640, 480, 3)

最新更新