我正在尝试对图像运行DCT变换。我试图使用以下代码使我的图像成为灰度图像:
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()
但是我收到了图片,但它的颜色通道没有改变。我做错了什么或者我应该改变什么?
答案 0 :(得分:3)
数组im
可能是一个三维数组,形状为(m, n, 3)
或(m, n, 4)
。检查im.shape
。
来自imshow
文档字符串:“cmap
如果X是3-D”,则会被忽略。
要使用色彩映射,您必须将二维数组传递给imshow
。例如,您可以绘制其中一个颜色通道,例如im[:,:,0]
,或绘制三个通道im.mean(axis=2)
的平均值。 (但如果im
的形状为(m, n, 4)
,则您可能不希望在平均值中包含Alpha通道。)
答案 1 :(得分: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()