python - 如何将 1d 数组转换为 3d 数组(将灰度图像转换为 rgb 格式)?

标签 python arrays numpy numpy-ndarray array-broadcasting

我有一个 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?

最佳答案

您可以使用 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]]]

或使用 opencv merge合并 3 个颜色 channel 的功能。

关于python - 如何将 1d 数组转换为 3d 数组(将灰度图像转换为 rgb 格式)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57103190/

相关文章:

Python filter() 带有变量的对象列表

python - 如何在Python中仅打开10%放大的jpeg图像?

javascript - ES6 中的 Array.reduce(),隐式返回和语法糖。到底发生了什么?

Ruby:在 n 元素数组中,哪个更快:array[-1] 或 array[n-1]?

python - 无法弄清楚如何清除随机森林中的 NaN

python - 最长公共(public)子序列实现-python

python - 如何在 Celery 中传递连接详细信息

C 程序循环数组旋转因超时而终止

沿轴的 Numpy 最大值

python - 按照列表中值的顺序过滤排序 NumPy 数组的行