使用matplotlib将图像显示为灰度

2024-04-24 20:49:22 发布

您现在位置:Python中文网/ 问答频道 /正文

我正试图使用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()

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

我在这里做错什么了?


Tags: 图像imageconvertpilmatplotlib颜色地图open
3条回答

import matplotlib.pyplot as plt

也可以在代码中运行一次

plt.gray()

这将以默认灰度显示图像

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

尝试使用灰度彩色地图?

比如说

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

有关颜色映射的列表,请参见http://scipy-cookbook.readthedocs.org/items/Matplotlib_Show_colormaps.html

以下代码将从文件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切换到cmap='gray_r'

相关问题 更多 >