python - 使用 matplotlib 将图像显示为灰度

标签 python matplotlib grayscale

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

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

我在这里做错了什么?

最佳答案

以下代码将从文件 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'

关于python - 使用 matplotlib 将图像显示为灰度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3823752/

相关文章:

imagemagick - 将图像转换为索引的 2 位灰度 BMP

c - 使用 libpng 在 C 中以灰度或 RGB 编写 PNG

java - 有没有一种方法可以使 Android 中的 ImageButton 变灰,而无需维护原始图像的单独灰色副本?

python - isinstance 和 Mocking

python - OrderedDict vs defaultdict vs dict

python - 将第二个动画图形嵌入到 PyQt5 GUI

python - Python 图中的线条比应有的长度长,与其他线条重叠

python - 根据 0-500 之间的 Int 值计算 2 个 RGB 值之间的颜色

python - 如何在 PyCharm 中使用 Python getpass.getpass

python - 显示为 Python 列表类型的 Matplotlib 图