使用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() 

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

我在这里做错了什么?

5 Solutions collect form web for “使用matplotlib将图像显示为灰度”

以下代码将从文件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')) 
  • 安装psycopg2时出错,找不到-lssl的库
  • 将相同的string追加到Python中的string列表中
  • Pythonic组织模块和软件包的方式
  • Python super()行为不可靠
  • 在本地主机上,我如何select一个免费的端口号码?
  • 为什么Python的dict.keys()返回一个列表而不是一个集合?
  • Python中的自然/相对日子
  • unit testing使用请求库的Python应用程序
  • 通过使用Pythonsorting文本文件
  • argparse模块如何添加选项没有任何参数?
  • Pythonstring格式化中的%s和%d有什么区别?