为什么pyplot显示的灰度图像有误?

3

我有一张灰度图像:

enter image description here

但是plt.inshow显示了错误的图像(很明显,它与原始图像不同):

from PIL import Image
import matplotlib.pyplot as plt
import matplotlib.cm as cm
img = Image.open('...')
plt.imshow(image, cmap=cm.gray)

输出结果为:

enter image description here

我尝试使用img.show()方法,它可以显示与原始图像相同的图像。

我的问题是:如何使用pyplot正确显示灰度图像?

我已经尝试过使用matplotlib将图像显示为灰度图像,但仍然无法正常工作。

1个回答

6

imshow默认会拉伸和归一化数据,使最小值变为黑色,最大值变为白色。你的数据目前在90到138范围内,因此它将映射 90->black138->white

为了防止这种情况发生,可以给imshow提供真实的最小值和最大值;在这种情况下,我认为你想设置 vmin=0,vmax=255。请尝试这样做:

plt.imshow(img, cmap=cm.gray, vmin=0, vmax=255)

对于我来说,它能够复制您的原始图像。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接