Как преобразовать массив Numpy в изображение PIL, используя карту цветов matplotlib

У меня есть простая проблема, но я не могу найти для нее хорошего решения.

Я хочу взять пустой 2D-массив, который представляет изображение в градациях серого, и преобразовать его в изображение RGB PIL, применяя некоторые цветовые карты matplotlib.

Я могу получить нормальный вывод в формате PNG с помощью команды pyplot.figure.figimage:

dpi = 100.0
w, h = myarray.shape[1]/dpi, myarray.shape[0]/dpi
fig = plt.figure(figsize=(w,h), dpi=dpi)
fig.figimage(sub, cmap=cm.gist_earth)
plt.savefig('out.png')

Хотя я мог бы адаптировать это, чтобы получить то, что я хочу (вероятно, используя StringIO, я получаю изображение PIL), Интересно, нет ли более простого способа сделать это, поскольку это кажется очень естественной проблемой визуализации изображения. Скажем, примерно так:

colored_PIL_image = magic_function(array, cmap)

Спасибо за прочтение!

108
задан Saullo G. P. Castro 12 May 2013 в 21:41
поделиться