任务描述
将一个归一化的分数以热图的形式显示出来,分数高的地方颜色深,分数小的地方颜色浅
注意:使用单一颜色无法实现这种渐变过程
原理
将单通道的0-1之间的score值映射到三通道的颜色空间
原料
- 一个单通道的score矩阵
- 颜色空间列表,通过
matplotlib.pyplot.get_cmap获得
工具
matplotlib.pyplot、numpy、cv2、PIL.Image
常用的画法还有:plt.scatter,可直接对score进行映射显示
颜色参考
1、Miscellaneous colormaps系列:
可选:flag, prism,ocean, gist_earth, terrain, gist_stern,gnuplot,CMRmap,gnuplot2,cubehelix,brg,hsv,gist_rainbow,rainbow,jet,nipy_spectral,nipy_spectral,gist_ncar.

2、纯色渐变系列Sequential colormaps:
可选:Greys,Purples, Blues ,Greens,Oranges,Reds,YIOrBr,YIOrRd,PuRd,RdPu,GnPu,PuBu,YIGnBu,PuBuGn,BuGn,YIGn,

使用cmap
import matplotlib.pyplot as plt
G_map=score # a ndnrray of score ,dim:N X M
G_cmap = plt.get_cmap('BuGn') #得到对应的颜色空间列表,四通道,应该包含透明通道
G_color_block = (G_cmap(G_map)*255)[:,:,:3].astype(np.uint8)#[:,:,:3] 表示进行切片,去除了透明通道
G_color_block就是映射后的颜色值,可直接使用
为了是结果更加丝滑,一般会先对score进行模糊,例如高斯模糊
overlay = cv2.GaussianBlur(overlay,tuple((patch_size * (1-overlap)).astype(int) * 2 +1),0)
cv2.GaussianBlur的用法自行查询
结果展示(未使用模糊效果)
















