我正在尝试编写一些用于图像处理的代码,但面临一个奇怪的问题。
我要显示以下图像,该图像已转换为0到255范围的灰度:
为此,我编写了这段代码
img_low_cont = plt.imread("hamster.png")
plt.imshow(img_low_cont, cmap='gray')
但是它正在显示我图像的另一个版本:
我试图弄清楚为什么会发生这种情况,但是我不确定。有人知道吗?
很抱歉没有提供更多详细信息,这正是我所拥有的全部信息。我花了几个小时研究answear,但没有发现任何有用的东西。
答案 0 :(得分:0)
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)