首页 > 解决方案 > 将整数矩阵映射到图像

问题描述

嗨,我无法将矩阵转换为图像。我正在处理生成“世界地图”的程序内容,并且正在尝试用漂亮的颜色显示矩阵。

我有一个类似于下面这个数组的数组:

world_map = [[2, 2, 2, 2, 2, 2, 2, 2, 3, 2, ],
             [1, 2, 2, 2, 2, 2, 1, 1, 2, 2, ],
             [1, 2, 2, 2, 2, 2, 1, 1, 1, 3, ],
             [2, 2, 2, 2, 2, 2, 2, 2, 1, 2, ],
             [2, 3, 2, 2, 2, 3, 2, 2, 2, 2, ],
             [3, 3, 2, 2, 2, 2, 2, 2, 2, 2, ],
             [2, 2, 2, 2, 2, 2, 1, 2, 2, 2, ],
             [2, 2, 2, 1, 2, 2, 1, 2, 2, 2, ],
             [2, 2, 1, 2, 2, 2, 2, 3, 2, 3, ],
             [2, 2, 2, 3, 2, 2, 1, 2, 2, 2, ]]

我想做的是通过将值 1、2 和 3 映射到我用这个查找表选择的一些 RGB 值来将此矩阵转换为相似和图像:

color_map = {
     1: [50, 64, 168],
     2: [70, 156, 44],
     3: [176, 167, 99],
}

我尝试使用 pythonmap函数映射每个值,并且尝试对这样的映射函数进行矢量化,np.vectorize(lambda c: color_map[c])(world_map)但这导致了错误。有谁知道将此矩阵映射到图像的正确方法?

标签: pythonpython-imaging-library

解决方案


这应该做你需要的:

world_map = np.array(world_map)
img = np.empty(tuple(list(world_map.shape) + [3]))
img[world_map==1] = [50, 64, 168]
img[world_map==2] = [70, 156, 44]
img[world_map==3] = [176, 167, 99]

推荐阅读