2017-10-14 17 views
0

画像に対してDCT変換を実行しようとしています。私は画像を受け取るが、それはチャンネルが変更されていない色だがplt.imshow(im、cmap = 'gray')がグレースケールイメージを表示しないのはなぜですか?

import numpy as np 
import matplotlib.pyplot as plt 
import scipy 

from numpy import pi 
from numpy import sin 
from numpy import zeros 
from numpy import r_ 
from scipy import signal 
from scipy import misc 
import matplotlib.pylab as pylab 

#matplotlib inline 
pylab.rcParams['figure.figsize'] = (20.0, 7.0) 

im = misc.imread("indoorPictureResize.jpg") 

#show the image 
f = plt.figure() 
plt.imshow(im,cmap='gray') 
plt.show() 

:私は私のイメージ次のコードを使用してグレースケール画像作成しようとしています。間違ったやり方をしたことがあるのですか?

答えて

2

アレイimは、おそらく形状が(m, n, 3)または(m, n, 4)の3次元配列です。 im.shapeを確認してください。

imshowからdocstring:Xが3-Dの場合、 "cmapは無視されます"

カラーマップを使用するには、2次元配列をimshowに渡す必要があります。たとえば、im[:,:,0]などのカラーチャネルの1つをプロットするか、または3つのチャネルの平均値をプロットすることができます(im.mean(axis=2))。 (。im(m, n, 4)を形作る持っている場合しかし、あなたはおそらく平均でアルファチャンネルを含めたくない)

0

このようなscipy.misc.imreadmode追加:

import numpy as np 
import matplotlib.pyplot as plt 
import scipy 

from numpy import pi 
from numpy import sin 
from numpy import zeros 
from numpy import r_ 
from scipy import signal 
from scipy import misc 
import matplotlib.pylab as pylab 

#matplotlib inline 
pylab.rcParams['figure.figsize'] = (20.0, 7.0) 

im = misc.imread("indoorPictureResize.jpg", mode="L") 

#show the image 
f = plt.figure() 
plt.imshow(im,cmap='gray') 
plt.show() 
+0

をありがとうございます。それはグレースケールに変わった。 –

関連する問題