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

che*_*gpu 3 image matplotlib

我有一个灰度图像:

在此处输入图片说明

但是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)
Run Code Online (Sandbox Code Playgroud)

输出是

在此处输入图片说明

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

我的问题是:如何使用pyplot?

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

tmd*_*son 6

imshow默认情况下将拉伸和规范化数据,使最小值变为黑色,最大值变为白色。您的数据当前在 90 到 138 的范围内,因此它将映射90->black138->white

为了防止这种情况发生,你可以给出imshow真正的最小值和最大值;在这种情况下,我认为您要设置vmin=0, vmax=255. 尝试这个:

plt.imshow(img, cmap=cm.gray, vmin=0, vmax=255)
Run Code Online (Sandbox Code Playgroud)

对我来说,复制你的原始图像。