我正在尝试编写一些用于图像处理的代码,但我遇到了一个奇怪的问题。
我想显示以下图像,该图像已转换为范围为 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
函数的vmin
和vmax
参数的文档提供了关于正在发生的事情的重要线索:
vmin, vmax : 标量,可选
使用标量数据且没有显式范数时,vmin 和 vmax 定义颜色图涵盖的数据范围。默认情况下,颜色图涵盖所提供数据的完整值范围。如果使用 norm 参数,则忽略 vmin、vmax。
换句话说:默认情况下,单色图像的强度会重新缩放。为了防止这种情况发生,请使用输入参数v=0
和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)