16

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

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

代码示例

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

4

1 回答 1

28

Use the vmin and vmax parameters:

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

Without specifying vmin and vmax, plt.imshow auto-adjusts its range to the min and max of the data.


I do not know of a way to set default vmin and vmax parameters for all imshow plots, but you could use functools.partial to prepare a custom imshow-like command with default parameters set:

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()
于 2012-10-06T14:59:41.833 回答