如何从图像创建一个4D的numpy数组?

5

我有一些图像,正在将它们转换为3D numpy数组。我想将所有这些图像数组聚合成一个大的numpy数组(使得该大数组的索引0是表示我的图像的3D numpy数组)。

如何最好地实现这一点?

我的图像形状看起来像这样:

(128, 128, 3) # shape of each image
[[[119  95  59]
  [118  94  58]
  [120  96  60]
  ...
  [110  89  51]
  [111  89  54]
  [116  93  61]]

 [[136 112  76]
  [139 115  79]
  [141 117  81]
  ...
  [114  93  55]
  [119  97  62]
  [114  91  59]]

 [[127 103  67]
  [127 103  67]
  [134 110  74]
  ...
  [110  89  51]
  [115  93  57]
  [119  97  62]]

 ...

 [[116  92  68]
  [105  83  55]
  [109  87  52]
  ...
  [119  99  58]
  [125 102  64]
  [120  97  59]]

 [[111  90  68]
  [111  89  64]
  [105  84  53]
  ...
  [123 101  60]
  [121  96  56]
  [129 104  64]]

 [[109  90  69]
  [105  85  60]
  [105  84  56]
  ...
  [121  99  58]
  [128 102  62]
  [129 104  62]]]

你尝试过 np.dstack(list_of_images) 吗? - cs95
什么是最好的方法?一个能正常工作的 - 合并数组 - wwii
我刚试了一下,但是出现了错误: 除了拼接维度之外,所有输入数组的维度必须完全匹配。 - jimjammo
欢迎来到SO。不幸的是,这不是一个讨论论坛或教程服务。请花时间阅读[ask]和该页面上找到的其他链接。 - wwii
1个回答

3
如果所有的图像数组都具有相同的形状,比如(128,128,3),那么np.stack非常适合。
np.stack(alist_images, axis=0)

应该生成一个(n, 128, 128, 3)的数组。

实际上,np.array(alist_images)也可以工作,但是stack让你选择另一个轴来加入它们,例如(128, 128, 3, n)。

如果它抱怨尺寸不匹配,则您没有一组匹配的数组。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接