2017-10-14 1076 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

谢谢。它变成了灰度。 –