python - 为什么 matplotlib 会改变显示图像中的颜色强度?
问题描述
我正在尝试编写一些用于图像处理的代码,但我遇到了一个奇怪的问题。
我想显示以下图像,已转换为 0 到 255 范围内的灰度:
为此,我编写了这段代码
img_low_cont = plt.imread("hamster.png")
plt.imshow(img_low_cont, cmap='gray')
但它显示了我的图像的另一个版本:
我试图弄清楚为什么会发生这种情况,但我不确定。有人知道吗?
很抱歉没有提供更多细节,这正是我所拥有的信息。我花了几个小时研究答案,但没有发现任何有用的东西。
解决方案
matplotlib函数的 thevmin
和arguments的文档为正在发生的事情提供了重要线索:vmax
imshow
vmin , vmax:标量,可选
当使用标量数据且没有明确的范数时,vmin 和 vmax 定义颜色图覆盖的数据范围。默认情况下,颜色图覆盖所提供数据的完整值范围。如果使用 norm 参数,则忽略 vmin、vmax。
换句话说:默认情况下,单色图像的强度会重新缩放。为防止这种情况发生,请使用输入参数v=0
and 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)
推荐阅读
- php - 在 mysql 服务器上使用 php 读取/上传 .csv 文件的问题
- rust - 修改未在该结构的 Vec 上循环实现复制特征的结构
- c# - Rx.Net 内存泄漏
- python - 无法将时间戳插入 Postgresql psycopg2
- verilog - 为什么我的输出信号有 2 个时钟周期延迟?
- python - pip 和 !pip 之间的实际区别
- excel - Range 类的排序方法仅在某些访问网络文件的 PC 上失败
- sas - 修改 SAS XML 映射文件中的数据类型
- python - 将多列通过字典映射成新列
- kubernetes - 可移植 vscode 中的 kubernetes 工具存在问题,因为它将工具放在用户目录中