matplotlib为什么更改显示图像的颜色强度?

时间:2019-01-20 22:44:05

标签: python 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

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

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

1 个答案:

答案 0 :(得分:0)

matplotlib的imshow函数的vminvmax参数的文档为所发生的事情提供了重要线索:

  

vmin vmax :标量,可选

     

在使用标量数据且没有明确的规范时,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)