我想通了與@ImportanceOfBeingErnest(How to convert Numpy array to PIL image applying matplotlib colormap)中提到的重複的答案
import matplotlib as mpl
import matplotlib.pyplot as plt
import matplotlib.image as mpimg
import numpy as np
import timeit
from PIL import Image
def pil_test():
cm_hot = mpl.cm.get_cmap('hot')
img_src = Image.open('test.jpg').convert('L')
img_src.thumbnail((512,512))
im = np.array(img_src)
im = cm_hot(im)
im = np.uint8(im * 255)
im = Image.fromarray(im)
im.save('test_hot.jpg')
def rgb2gray(rgb):
return np.dot(rgb[:,:,:3], [0.299, 0.587, 0.114])
def plt_test():
img_src = mpimg.imread('test.jpg')
im = rgb2gray(img_src)
f = plt.figure(figsize=(4, 4), dpi=128)
plt.axis('off')
plt.imshow(im, cmap='hot')
plt.savefig('test2_hot.jpg', dpi=f.dpi)
plt.close()
t = timeit.timeit(pil_test, number=30)
print('PIL: %s' % t)
t = timeit.timeit(plt_test, number=30)
print('PLT: %s' % t)
性能結果是:
PIL: 1.7473899199976586
PLT: 10.632971412000188
他們倆給我hot
彩色地圖類似的結果。
請澄清你的問題。「但在性能不好」,爲什麼這樣做不好的表現呢? 「插入彩色地圖是一個好主意」,你是什麼意思? 「將灰度圖像轉換成彩色圖像」,以什麼方式?應該將哪種顏色映射到哪種灰色調?你有沒有輸入圖像的例子,結果應該是什麼? – Bart
[如何將Numpy數組轉換爲應用matplotlib顏色映射的PIL圖像]的可能重複(http://stackoverflow.com/questions/10965417/how-to-convert-numpy-array-to-pil-image-applying-matplotlib-顏色表) – ImportanceOfBeingErnest