使用 matplotlib 将图像显示为灰度

新手上路,请多包涵

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

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

我在这里做错了什么?

原文由 Ryan 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 1k
2 个回答

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

原文由 unutbu 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题