为什么plt.imshow(im, cmap='gray')不能显示灰度图像?

4

我正在尝试对一张图像运行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()

我收到了图片,但它的颜色通道没有改变。我做错了什么吗?还是需要做些什么改变吗?

2个回答

6

数组im可能是一个3维数组,形状为(m, n, 3)(m, n, 4)。请检查im.shape

根据imshow的文档: "如果X是3维,则将被忽略"

要使用颜色映射,请将2D数组传递给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()

谢谢。它已经转换为灰度。 - DeJurnett Norrington

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接