首页 > 解决方案 > 为什么 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

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

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

标签: pythonmatplotlib

解决方案


matplotlib函数的 thevmin和arguments的文档为正在发生的事情提供了重要线索:vmaximshow

vmin , vmax:标量,可选

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

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

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

推荐阅读