2016-10-18 5 views
1

を望んでいた:黒でmatplotlibの画像は黒と白で示しているが、私はmatplotlibの中に画像をプロットする小さなサンプルコードを有しており、画像はこのように示されているグレー

enter image description here

注意画像

enter image description here

画像を描画するために私のコードはこれです:私の所望の出力がこれですながらボックスは、黒の背景を持っています

私の理解では、cmap=greyはグレースケールで表示する必要があります。以下は行列imgのスニペットがプロットされている:私はここで何をしないのです

[[ 192.77504036 +1.21392817e-11j 151.92357434 +1.21278246e-11j 
    140.67585733 +6.71014111e-12j 167.76903747 +2.92050743e-12j 
    147.59664180 +2.33718944e-12j 98.27986577 +3.56896094e-12j 
    96.16252035 +5.31530804e-12j 112.39194666 +5.86689097e-12j.... 

+0

多分これは助けることができますhttp://stackoverflow.com/questions/3823752/display-image-as-grayscale-using-matplotlib – Maddy

+0

@Mani: 'gray_r'を使うことは役に立ちません。部分的に白く黒いエッジで表示されます。 – CyprUS

+0

@CyprUSそのリンク(およびhttp://matplotlib.org/examples/color/colormaps_reference.html)は、「Greys_r」を示唆しているようです。 '_r'については不明です。両方お試しいただけますか?私はそれが問題だとは思わない。 – pingul

答えて

0

、私が欲しかった色(灰色)は実際には「負の」ピクセルです。画像行列から128を引いて、0-255から-128までのピクセル範囲を+127にします。負のピクセルは、パッケージmatplotlibによって「灰色」の色で表示されます。

val = np.subtract(imageMatrix,128) 
plt.subplot('111') 
plt.imshow(np.abs(val), cmap=plt.get_cmap('gray'),vmin=0,vmax=255) 
plt.title('Image'), plt.xticks([]), plt.yticks([]) 
plt.show() 

これまで受け入れられていた答えは、マイナススケールでピクセルを処理することについては言及していないので、私は自分の答えを受け入れたものとしてマークします。

0

問題は、3つのチャネルがあり、1つしかなく、データが[0, 1]の間で正規化されている必要があることが原因と考えられます。これは私に与え

import matplotlib.pyplot as plt 
import matplotlib.image as mpimg 
import numpy as np 

img = mpimg.imread('Lenna.png') 
# The formula below can be changed -- the point is that you go from 3 values to 1 
imgplot = plt.imshow(np.dot(img[...,:3], [0.33, 0.33, 0.33]), cmap='gray') 
plt.show() 

:私はこれを使用して、適切探してグレースケール画像を取得

また

enter image description here

、データのスナップショット:私の場合のために

[[ 0.63152942 0.63152942 0.63800002 ..., 0.64705883 0.59658825 0.50341177] 
[ 0.63152942 0.63152942 0.63800002 ..., 0.64705883 0.59658825 0.50341177] 
[ 0.63152942 0.63152942 0.63800002 ..., 0.64705883 0.59658825 0.50341177] 
...] 
+0

私はこれを試し、あなたに知らせます – CyprUS

関連する問題