将Numpy数组转换为图像

时间:2014-09-21 08:48:51

标签: python image numpy matplotlib imshow

我有一个讨厌的问题。我有一个充满浮动值的numpy数组。背景是数组的值代表正方形网格的水深。

345.34 888.78 999.35
300.00  98.00  88.45
440.89 423.56  11.68

我想将此数组转换/保存为图像。因此,一系列值应由一种颜色表示。

"dark blue" "midnight blue" "midnight blue"       #00008B #191970 #191970
"dark blue" "medium blue"   "medium blue"    or   #00008B #0000CD #0000CD 
"navy"      "navy"          "blue"                #000080 #000080 #0000FF

我通过将数组保存为ASCII文件并将其在ArcGIS中转换为栅格地图来规避此问题,但我想避免使用ArcGIS,因为我有太多的数组/地图来手动执行。

我的尝试是通过掩码用整数替换一系列值。然后我将替换的浮点值转换为字符串,并用RGB颜色代码替换字符串。我终于使用Image.fromarray来创建一个图像。结果是一团糟。它不像淹没地图。

我希望有人知道一种可行的方式。

1 个答案:

答案 0 :(得分:3)

您只需将数据传递到matplotlib.pyplot.imshow()即可实现。色标可以是您选择的adjusted by the color map。假设您已将数据保存在文本文件中:

import numpy as np
import matplotlib.cm as cm
import matplotlib.pyplot as plt

data = np.loadtxt('data.txt')
plt.imshow(data, cmap=cm.Blues)
plt.show()