为什么 matplotlib 会改变显示图像中的颜色强度



我正在尝试编写一些用于图像处理的代码,但我遇到了一个奇怪的问题。

我想显示以下图像,该图像已转换为范围为 0 到 255 的灰度:

https://ibb.co/tqTPcpq

为此,我编写了以下代码

img_low_cont = plt.imread("hamster.png") 
plt.imshow(img_low_cont, cmap='gray')

但它显示了我图像的另一个版本:

https://ibb.co/Xzw3WYB

我试图弄清楚为什么它会发生,但我不确定。有人知道吗?

很抱歉没有提供更多细节,这正是我所拥有的全部信息。我花了几个小时研究安斯服装,但没有发现任何有用的东西。

matplotlib imshow函数的vminvmax参数的文档提供了关于正在发生的事情的重要线索:

vminvmax : 标量,可选

使用标量数据且没有显式范数时,vmin 和 vmax 定义颜色图涵盖的数据范围。默认情况下,颜色图涵盖所提供数据的完整值范围。如果使用 norm 参数,则忽略 vmin、vmax。

换句话说:默认情况下,单色图像的强度会重新缩放。为了防止这种情况发生,请使用输入参数v=0vmax=255,如下所示:

import matplotlib.pyplot as plt
img_low_cont = plt.imread("hamster.png") 
plt.imshow(img_low_cont, cmap='gray', vmin=0, vmax=255)

最新更新