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