我最终找到答案这使用PIL,基本上与块的颜色创建一个新的图像,然后合成的原始图像,与此有关新图像,使用定义透明alpha层的遮罩。下面的代码(适用于每个图像转换成一个文件夹,名为数据,输出到一个文件夹名为输出):
from PIL import Image
import os
dataFiles = os.listdir('data/')
for filename in dataFiles:
#strip off the file extension
name = os.path.splitext(filename)[0]
bw = Image.open('data/%s' %(filename,))
#create the coloured overlays
red = Image.new('RGB',bw.size,(255,0,0))
green = Image.new('RGB',bw.size,(0,255,0))
blue = Image.new('RGB',bw.size,(0,0,255))
yellow = Image.new('RGB',bw.size,(255,255,0))
#create a mask using RGBA to define an alpha channel to make the overlay transparent
mask = Image.new('RGBA',bw.size,(0,0,0,123))
Image.composite(bw,red,mask).convert('RGB').save('output/%sr.bmp' % (name,))
Image.composite(bw,green,mask).convert('RGB').save('output/%sg.bmp' % (name,))
Image.composite(bw,blue,mask).convert('RGB').save('output/%sb.bmp' % (name,))
Image.composite(bw,yellow,mask).convert('RGB').save('output/%sy.bmp' % (name,))
不能不幸后输出图像,由于缺乏销售代表。
感谢斯蒂芬,这是非常有用的。 – Ctrlspc 2012-02-09 09:30:44
谢谢Stefan,我经常使用这种安静。在颜色方案(即plt.cm.cmap)之后,这怎么能延伸超过3种颜色? 我有一个7位二进制贴图,我需要覆盖灰度图像。 – iratzhash 2016-11-08 11:22:39
plt.cm.viridis(或任何颜色)将为任何呼叫返回RGB值,例如“[10]:plt.cm.viridis(15) Out [10] :(0.28192400000000001,0.089665999999999996,0.41241499999999998,1.0)”。您也可以在整个阵列上操作,例如“plt.cm.viridis(my_image)”来获取适当的RGB值。 – 2016-11-11 01:54:30