首页 > 解决方案 > 如何将 1d 数组转换为 3d 数组(将灰度图像转换为 rgb 格式)?

问题描述

我有一个 numpy 数组格式的图像,我编写了假设 rgb 图像作为输入的代码,但我发现输入由黑白图像组成。

对于应该是 RGB 即 (256,256,3) 维度的图像,我将输入作为灰度 (256,256) 数组图像,我想将其转换为 (256,256,3)

这就是我在 numpy 数组中的内容:

[[0 0 0 ... 0 0 0]
 [0 0 0 ... 0 0 0]
 [0 0 0 ... 0 0 0]
 ...
 [0 0 0 ... 0 0 0]
 [0 0 0 ... 0 0 0]
 [0 0 0 ... 0 0 0]]
(256, 256)

这就是我想要的:(对于上面数组中的每个值,相同元素的数组 3 次)

[[[0. 0. 0.]
  [0. 0. 0.]
  [0. 0. 0.]
  ...
  [0. 0. 0.]
  [0. 0. 0.]
  [0. 0. 0.]]]

是否有任何 numpy 函数可以做到这一点?如果没有,有什么方法可以在 python 数组中执行此操作并将其转换为 numpy?

标签: pythonarraysnumpynumpy-ndarrayarray-broadcasting

解决方案


您可以使用numpy.dstack沿第三轴堆叠二维数组:

import numpy as np

a = np.array([[1, 2], [3, 4]])
b = np.dstack([a, a, a])

结果:

[[[1 1 1]
  [2 2 2]]
 [[3 3 3]
  [4 4 4]]]

或使用 opencvmerge函数合并 3 个颜色通道。


推荐阅读