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

jim*_*mmo 5 python arrays numpy image-processing

我有一些我正在转换成 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]]]
Run Code Online (Sandbox Code Playgroud)

hpa*_*ulj 3

如果所有图像数组具有相同的形状,例如 (128, 128, 3),那么np.stack效果会很好

np.stack(alist_images, axis=0)
Run Code Online (Sandbox Code Playgroud)

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

实际上np.array(alist_images)也应该有效,但stack可以让您选择另一个轴来连接它们,例如 (128, 128, 3, n)

如果它抱怨维度不匹配,那么您就没有匹配数组的列表。