python - 如何在 python 中将多个 3 维数组更改为单个 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.shape = (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)
推荐阅读
- openoffice-calc - 如何从另一个文档运行脚本
- java - 如何在android studio的工作管理器类上添加一个带有onclicklistener的按钮?
- boto3 - Boto3 MTurk 具有资格的工人数量与网站上的不同
- asp.net - ASP.NET 位图转图像
- python - 根据模型中的数据在 django cms 中创建页面树节点
- javascript - 处理嵌套条件渲染的最佳方法是什么?
- javascript - 如何在嵌入 discord.js V13 时使用下载的图像
- c++ - 使用 C++ 和 make 与 max 和 min 定义冲突
- cocoa - Cocoa:如何删除 NSStatusBarButton 的填充?
- ruby-on-rails - 检查 activerecord 对象中多个属性的值是否存在