2018/10/30 Updated by
2019/12/20 Updated by
2020/03/14 Updated by

matplotlib colormap


[Up] Japanese English

matplotlib colormapを参照してnumpy arrayをPIL Imageへと変換する方法

次のURLが参考になる。

How to convert a NumPy array to PIL image applying matplotlib colormap

方法1

  1. 正規化されて最大値が1であるNumPy arrayについて
  2. colormap (matplotlib.cm)を直接適用して
  3. 値を0-255の範囲に拡大縮小して
  4. np.uint8() を用いてuint8 型に変換する
  5. Image.fromarray()を使う
[例]
from PIL import Image
from matplotlib import cm
import cv2
import matplot.pyplot as plt

img = np.asarray(img)                            # numpy array
img = np.clip(np.nan_to_num(img), 0.0, 1.0)      # ensure [0,1]
img = Image.fromarray(np.uint8(cm.jet(img)*255)) # apply colormap and rescale between [0,255]

# if you want to resize the image
img = np.asarray(img.convert('RGB'))
img = cv2.resize(img,(HEIGHT,WIDTH),interpolation=cv2.INTER_CUBIC)

# display
plt.imshow(img)
plt.show()