Estou tentando exibir uma imagem em escala de cinza usando matplotlib.pyplot.imshow () . Meu problema é que a imagem em escala de cinza é exibida como um mapa de cores. Preciso da escala de cinza porque quero desenhar em cima da imagem com cores.
Eu li na imagem e converto para escala de cinza usando Image.open (). Convert ("L") do PIL
image = Image.open(file).convert("L")
Em seguida, converto a imagem em uma matriz, para que eu possa processar facilmente algumas imagens usando
matrix = scipy.misc.fromimage(image, 0)
No entanto, quando eu faço
figure()
matplotlib.pyplot.imshow(matrix)
show()
exibe a imagem usando um mapa de cores (ou seja, não é em escala de cinza).
O que eu estou fazendo errado aqui?
fonte
_r
".plt.imshow(im_gray,cmap='gray', vmin = 0, vmax = 255)
Tente usar um mapa de cores em escala de cinza?
Por exemplo, algo como
Para obter uma lista dos mapas de cores, consulte http://scipy-cookbook.readthedocs.org/items/Matplotlib_Show_colormaps.html
fonte
import matplotlib.pyplot as plt
Você também pode executar uma vez no seu código
Isso mostrará as imagens em escala de cinza como padrão
fonte
gray()
ougrey()
?gray
... cinza é a ortografia americana padrão e cinza é a ortografia britânica da mesma cor.Eu usaria o método get_cmap. Ex.:
fonte
A resposta do @ unutbu está bem próxima da resposta certa.
Por padrão, o plt.imshow () tentará dimensionar os dados da matriz (MxN) para 0,0 ~ 1,0. E então mapeie para 0 ~ 255. Para imagens mais naturais, tudo bem, você não verá uma diferença. Mas se você tiver um intervalo estreito de imagem com valor de pixel, diga que o pixel mínimo é 156 e o pixel máximo é 234. A imagem cinza parecerá totalmente errada. A maneira correta de mostrar uma imagem em cinza é
Vamos ver um exemplo:
esta é a imagem original : original
isso está usando a configuração de norma padrão, que é Nenhuma: foto errada
isso está usando a configuração NoNorm, que é NoNorm (): foto direita
fonte
tente isto:
fonte
pylab.grey()
, talvez tenha sido removido?Não use interpolação e defina para cinza.
fonte