python - 将颜色图应用于灰度图像以高效生成 RGB 图像
问题描述
有没有一种有效的方法将颜色映射字典应用于灰度图像以使用 numpy 函数转换为 RGB 图像?
例如。我有一个灰度图像作为 numpy array 。
grayscale_image = array([[0., 0., 3.],
[0., 2., 0.]])
和一个像
color_map = {3: (1,2,3), 2: (4,5,6)}
如何生成 RGB 图像
rgb_image =
array([[[0., 0., 0.],
[0., 0., 0.],
[1., 2., 3.]],
[[0., 0., 0.],
[4., 5., 6.],
[0., 0., 0.]]])
解决方案
如果您将颜色图设为数组而不是字典,则可以利用 numpy 非常方便的索引。如果您有 256 种灰度,您将获得 shape 的颜色图[256, 3]
。然后可以直接索引:
import numpy as np
gray = np.array([
[0, 0, 3],
[0, 2, 0]
])
color_map = np.array([
[0,0,0],
[0,0,0],
[4,5,6],
[1,2,3],
# ... remaining color map values
])
rgb = color_map[gray]
结果:
array([[[0, 0, 0],
[0, 0, 0],
[1, 2, 3]],
[[0, 0, 0],
[4, 5, 6],
[0, 0, 0]]])
推荐阅读
- java - Java Swing 会限制它绘制的项目数吗?
- python - 如何运行for循环然后在最后进行计算
- amazon-web-services - 以用户身份执行:xxxx\xxxxx。找不到配置文件 (xxxxxxx)。进程退出代码 255。步骤失败
- android - 在 Windows 7 中找不到 HAXM 设备
- java - CBC模式下的DES必须被捕获或抛出错误
- python - 熊猫 groupby 不返回预期的输出
- networking - 是否可以在不使用 VPN 的情况下将同一 LAN 上的多台远程机器互连?
- javascript - 如何在角度或 JavaScript 中将十进制数转换为美分
- c# - 带有方法 Post 的 HttpWebRequest
- go - 在 Go 中解析使用 openssl 生成的 curve25519 键