使用matplotlib将图像显示为灰度

我正在尝试使用matplotlib.pyplot.imshow()来显示灰度图像。 我的问题是,灰度图像显示为一个色彩表。 我需要灰度,因为我想用颜色在图像的顶部绘制。

我读了图像,并转换为灰度使用PIL的Image.open()。convert(“L”)

image = Image.open(file).convert("L") 

然后我将图像转换为matrix,以便我可以轻松地使用一些image processing

 matrix = scipy.misc.fromimage(image, 0) 

但是,当我这样做

 figure() matplotlib.pyplot.imshow(matrix) show() 

它使用色彩映射显示图像(即不是灰度)。

我在这里做错了什么?

以下代码将从文件image.png加载图像,并将其显示为灰度。

 import numpy as np import matplotlib.pyplot as plt from PIL import Image fname = 'image.png' image = Image.open(fname).convert("L") arr = np.asarray(image) plt.imshow(arr, cmap='gray') plt.show() 

如果要显示反灰度,请将cmap切换到cmap='gray_r'

尝试使用灰度色彩表?

比如像

 imshow(..., cmap=pyplot.cm.binary) 

有关colormap的列表,请参阅http://scipy-cookbook.readthedocs.org/items/Matplotlib_Show_colormaps.html

import matplotlib.pyplot as plt

你也可以在代码中运行一次

 plt.gray() 

这将默认显示灰度图像

 im = array(Image.open('I_am_batman.jpg').convert('L')) plt.imshow(im) plt.show() 

尝试这个:

 import pylab from scipy import misc pylab.imshow(misc.lena(),cmap=pylab.gray()) pylab.show() 

我会使用get_cmap方法。 例:

 import matplotlib.pyplot as plt plt.imshow(matrix, cmap=plt.get_cmap('gray'))