python - 如何将 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?
解决方案
您可以使用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 个颜色通道。
推荐阅读
- python - 媒体文件不会出现在 nginx 中,但静态文件会
- android - Android 谷歌地图:在谷歌地图上绘制从 a 点到 b 点的导航路径 - 路径应该是可编辑的
- reactjs - 如何阻止 componentDidUpdate 创建无限循环
- arrays - 如果我使用非数组版本的 unique_ptr 来保存数组会怎样?
- video-recording - FFMPEG 视频录像机问题
- amazon-web-services - 通过 Lambda 函数触发 AWS Glue 工作流
- azure-functions - 运行 Azure 时间触发器函数时出现 Windows PDB 编写器版本错误
- android - 底部导航菜单项显示填充颜色。我想显示我在可绘制文件夹中添加的确切图标
- windows - Windows Source-Specific-Multicast 数据包在应用层丢弃?
- php - 为什么 Zend 框架中的正则表达式路由不起作用?