我最終找到答案這使用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