imshow (img, cmap = cm.gray) muestra un valor blanco para 128

Me estoy moviendo de MatLab a python y estoy jugando con la función imshow.

Parece que no puedo entender por qué no muestra el valor 128 como gris con el que elegí el cmap como escala de grises.

Ejemplo de código

Parece que usa la escala de grises para los valores más altos (128) y más bajos. Quiero que use la escala de grises para [0: 255]. ¿Cómo puedo hacer eso?

Use los parámetros vmin y vmax :

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

Sin especificar vmin y vmax , plt.imshow ajusta automáticamente su rango al mínimo y máximo de los datos.


No conozco una forma de configurar los vmin predeterminados de vmin y vmax para todos los gráficos de imshow, pero podría usar functools.partial para preparar un comando personalizado imshow-like con los parámetros predeterminados establecidos:

 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()