imshow(img,cmap = cm.gray)显示白色的128值

Nor*_*ldt 16 python matplotlib

我正在从MatLab转向python并使用imshow函数.

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

代码示例

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

unu*_*tbu 28

使用vminvmax参数:

plt.imshow(bg, cmap=plt.get_cmap('gray'), vmin=0, vmax=255)
Run Code Online (Sandbox Code Playgroud)

没有指定vminvmax,plt.imshow自动调整其范围到数据的最小值和最大值.


我不知道为所有imshow图设置默认vminvmax参数的方法,但您可以使用functools.partial默认参数设置准备自定义imshow-like命令:

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()
Run Code Online (Sandbox Code Playgroud)

  • 是的,使用`functools.partial`.往上看. (2认同)