2017-10-14 1077 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)。檢查im.shape

來自imshow docstring:如果X是3-D「cmap將被忽略」

要使用色彩映射表,您必須將二維數組傳遞到imshow。例如,您可以繪製其中一個顏色通道,如im[:,:,0],或繪製三個通道的平均值,即im.mean(axis=2)。 (但是,如果im具有形狀(m, n, 4),你可能不希望包括在平均alpha通道。)

0

scipy.misc.imread添加mode這樣的:

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

謝謝。它變成了灰度。 –