2017-08-28 15 views
0

128x128x64の画像に64の画像があり、各画像のサイズは128x128です。画像は3つのクラスを提示し、ラベルは0-背景、1-第1オブジェクト、2秒オブジェクトである。私は画像を表示するためにmatplotlibを使用しています。グレー画像のカラーマップを表示する方法は?

import matplotlib.pyplot as plt 
fig = plt.figure(figsize=(32,32)) 
ax1 = plt.add_subplot(111) 
ax1.imshow(image[:, :, 32]) 

カラーマップで表示したいと思います。背景は黒色で、オブジェクト1は赤色になり、オブジェクト2は緑色になります。コードをどのように変更すればよいですか?ありがとう 予想される結果は、図の左下が好きです enter image description here

答えて

2

あなたの質問はあまり明確ではありません。あなたは、図の左下のパネルのような結果を得たいと考えていますが、このイメージには濃淡と緑と赤のさまざまなレベルがあります。

ご質問から、0.(背景)、1.(最初のオブジェクト)、2.(2番目のオブジェクト)の3つの可能な値を持つ128x128アレイがあることをご理解いただきました。あれは正しいですか?そうであれば、本質的にあなたの質問は、3レベルと色の黒、赤、緑と離散カラーマップを作成する方法に沸騰します。ここで

は、私がどうなるのかです:

# Generate some fake data for testing 
img = np.zeros((128,128)) # Background 
img[:50,:50] = np.ones((50,50)) # Object 1 
img[-50:,-50:] = np.ones((50,50))*2 # Object 2 

#>img 
#>array([[ 1., 1., 1., ..., 0., 0., 0.], 
#  [ 1., 1., 1., ..., 0., 0., 0.], 
#  [ 1., 1., 1., ..., 0., 0., 0.], 
#  ..., 
#  [ 0., 0., 0., ..., 2., 2., 2.], 
#  [ 0., 0., 0., ..., 2., 2., 2.], 
#  [ 0., 0., 0., ..., 2., 2., 2.]]) 





# Create a custom discret colormap 
from matplotlib.colors import LinearSegmentedColormap 
cmap = LinearSegmentedColormap.from_list("3colors", ['k','r','g'], N=3) 



# Plot 
# Don't forget to includes the bounds of your data (vmin/vmax) 
# to scale the colormap accordingly 
fig,ax = plt.subplots() 
im = ax.imshow(img, cmap=cmap, vmin=0, vmax=2) 
ax.grid(False) 
cax = fig.colorbar(im) 
cax.set_ticks([0,1,2]) 

enter image description here

+0

右。あなたは私の期待通りにやった。私は良い例を見つけることができないので、私はちょうどGoogleと質問に添付されます。しかし、あなたは私の期待通りでした。おかげで – user8264

+0

ありがとうDiziet。私はあなたのコードを使用し、それはうまくいった。色を調整する方法についてもう一度聞きたいだけです。私たちは、黄色の色をより太字に、青色をより明るく調整するオプションはありますか?あなたが赤、青、青を一緒に使用すると、青が太すぎることがわかりました。赤と黄は軽すぎます。 – user8264

+1

(R、G、B、アルファ)フォーマット。 'cmap = LinearSegmentedColormap.from_list(" 3colors "、[(r、g、b)、(r、g、b)、(r、g、b)]、N = 3)' –

関連する問題