私は基本的にブロック色で新しいイメージを作成し、次にこれを、元の画像を合成し、PILを使用して、この答えを見つけてしまいました透明なアルファレイヤを定義するマスクを使用して新しいイメージを作成します。以下のコード(出力というフォルダに出力し、データと呼ばれるフォルダ内のすべての画像を変換するようになって):
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
ステファンありがとう、私は頻繁にこれを静かに使用します。これをどのようにして3つの色、すなわちplt.cm.cmapを超えて拡張することができますか? 私は7つのバイナリマップを持っています、私はグレースケールイメージにオーバーレイする必要があります。 – iratzhash
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値を取得します。 –