以灰度显示图像
我正在尝试使用 matplotlib.pyplot.imshow()
来显示一张灰度图像。我的问题是,这张灰度图像显示成了彩色图。其实我需要它是灰度的,因为我想在图像上用颜色进行绘制。
我先用 PIL 的 Image.open().convert("L")
来读取图像并转换成灰度图。
image = Image.open(file).convert("L")
然后我把图像转换成一个矩阵,这样我就可以方便地进行一些图像处理,使用的是
matrix = scipy.misc.fromimage(image, 0)
但是,当我执行
figure()
matplotlib.pyplot.imshow(matrix)
show()
时,它却用彩色图来显示图像(也就是说,它不是灰度的)。
我到底哪里做错了呢?
9 个回答
29
import matplotlib.pyplot as plt
你可以在你的代码中运行一次这个命令
plt.gray()
这样默认会以灰度图的形式显示图片
im = array(Image.open('I_am_batman.jpg').convert('L'))
plt.imshow(im)
plt.show()
43
试着使用灰度色图吧?
比如说像这样:
imshow(..., cmap=pyplot.cm.binary)
想要查看色图的列表,可以去这个链接:http://scipy-cookbook.readthedocs.org/items/Matplotlib_Show_colormaps.html
503
下面的代码会从一个文件 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', vmin=0, vmax=255)
plt.show()
如果你想显示反转的灰度图,只需要把颜色映射改成 cmap='gray_r'
就可以了。