Estoy tratando de mostrar una imagen en escala de grises usando matplotlib.pyplot.imshow () . Mi problema es que la imagen en escala de grises se muestra como un mapa de colores. Necesito la escala de grises porque quiero dibujar en la parte superior de la imagen con color.
Leí en la imagen y la convertí a escala de grises usando Image.open (). Convert ("L") de PIL
image = Image.open(file).convert("L")
Luego convierto la imagen a una matriz para que pueda hacer un poco de procesamiento de imágenes usando
matrix = scipy.misc.fromimage(image, 0)
Sin embargo, cuando lo hago
figure()
matplotlib.pyplot.imshow(matrix)
show()
muestra la imagen usando un mapa de colores (es decir, no es en escala de grises).
¿Qué estoy haciendo mal aquí?
fuente
_r
".plt.imshow(im_gray,cmap='gray', vmin = 0, vmax = 255)
Intenta usar un mapa de colores en escala de grises?
Por ejemplo, algo como
Para obtener una lista de mapas de color, consulte http://scipy-cookbook.readthedocs.org/items/Matplotlib_Show_colormaps.html
fuente
import matplotlib.pyplot as plt
También puede ejecutar una vez en su código
Esto mostrará las imágenes en escala de grises por defecto
fuente
gray()
ogrey()
?gray
... el gris es la ortografía estadounidense estándar y el gris es la ortografía británica para el mismo color.Usaría el método get_cmap. Ex.:
fuente
La respuesta de @unutbu está bastante cerca de la respuesta correcta.
Por defecto, plt.imshow () intentará escalar sus datos de matriz (MxN) a 0.0 ~ 1.0. Y luego mapear a 0 ~ 255. Para la mayoría de las imágenes tomadas de forma natural, está bien, no verá una diferente. Pero si tiene un rango estrecho de imagen de valor de píxel, digamos que el píxel mínimo es 156 y el píxel máximo es 234. La imagen gris se verá totalmente incorrecta. La forma correcta de mostrar una imagen en gris es
Veamos un ejemplo:
Esta es la imagen original : original
esto está usando la configuración de la norma predeterminada, que es Ninguno: imagen incorrecta
esto está usando la configuración NoNorm, que es NoNorm (): foto derecha
fuente
prueba esto:
fuente
pylab.grey()
, tal vez ha sido eliminado?No use interpolación y configúrelo en gris.
fuente