2017-05-01 6 views
0

dtype=floatnumpyの配列を作成する場合、matplotlib.pyplot.imshowを使用する表示方法は値に依存するように見えるため、0.50の値はわずか50%のグレーではありません。dtype = floatを使ってnumpy NxM配列をグレイスケール画像として表示する方法は?

このコードテンプレートを使用する:のように画像[[1.0, 1.0], [0.0, 0.5]]示す

import numpy as np 
import matplotlib.pyplot as plt 
img = np.empty([2, 2]) 
img[:] = {image} 
plt.imshow(img, cmap='gray') 
plt.show() 

を:

enter image description here

しかし、唯一の0.0を1.0に変更された画像[[1.0, 1.0], [1.0, 0.5]]は、として示す:

enter image description here

どちらの場合も0.5(右下)が50%のグレーとして表示されることが予想されましたが、何らかの理由でプレゼンテーション方法が変化するため、配列内の他の要素の値によって0.5が異なって解釈されます。

したがって、dtype = floatでnumpyのNxM配列をプレーングレースケール画像として表示するにはどうすればよいですか?

plt.imshow(img, cmap='gray', vmin=0, vmax=1) 

答えて

3

あなたは、カラースケールの限界を修正する必要があります。imshowはこれを避けるためにそう、デフォルトで正規化しない、vminvmaxが、その後である、imshowに与えられなければならないことが判明

+0

ありがとう、非常にカラーバーに役立ちます:-) – EquipDev

0

plt.imshow(img, cmap='gray',clim=(0,1)) 

何が起こっているのかをよく知るには、色と数値の間の変換を視覚化するカラーバーを含めることができます。直ちにmatplotlib.pyplotデータにカラースケールの範囲を更新することを明らかに二つの例のためにこれを行う

fig,ax = plt.subplots() 
cax = plt.imshow(img, cmap='gray') 
cbar = fig.colorbar(cax) 
plt.show() 

:例えば、次のコードを使用して。結果として、色と数値との間の変換は、2つの場合で異なる。

関連する問題