【问题标题】:imshow(img, cmap=cm.gray) shows a white for 128 valueimshow(img, cmap=cm.gray) 显示 128 值的白色
【发布时间】:2012-10-06 14:45:24
【问题描述】:

我正在从 MatLab 迁移到 python 并使用 imshow 函数。

我似乎无法理解为什么它没有将值 128 显示为灰色,因为我选择了 cmap 为灰度。

似乎它使用灰度来表示最高 (128) 和最低值。我希望它使用 [0:255] 的灰度。我该怎么做?

【问题讨论】:

    标签: python matplotlib


    【解决方案1】:

    使用vminvmax 参数:

    plt.imshow(bg, cmap=plt.get_cmap('gray'), vmin=0, vmax=255)
    

    如果不指定 vminvmaxplt.imshow 会自动将其范围调整为数据的最小值和最大值。


    我不知道如何为所有 imshow 绘图设置默认的 vminvmax 参数,但您可以使用 functools.partial 准备一个自定义的类似 imshow 的命令并设置默认参数:

    import matplotlib.pyplot as plt
    import numpy as np
    import functools
    
    bwimshow = functools.partial(plt.imshow, vmin=0, vmax=255,
                                 cmap=plt.get_cmap('gray'))
    
    dots = np.random.randn(10, 10)*255
    bwimshow(dots)
    cbar = plt.colorbar()
    
    plt.show()
    

    【讨论】:

    • 非常感谢! :-) - 有没有办法为所有地块设置默认值?
    • 是的,使用functools.partial。见上文。
    猜你喜欢
    • 2014-04-21
    • 1970-01-01
    • 1970-01-01
    • 2020-08-16
    • 1970-01-01
    • 1970-01-01
    • 2022-01-18
    • 1970-01-01
    相关资源
    最近更新 更多