Próbuję wyświetlić obraz w skali szarości za pomocą matplotlib.pyplot.imshow () . Mój problem polega na tym, że obraz w skali szarości jest wyświetlany jako mapa kolorów. Potrzebuję skali szarości, ponieważ chcę rysować na obrazie kolorem.
Czytam na obrazie i przekonwertowałem na skalę szarości za pomocą PIL's Image.open (). Convert („L”)
image = Image.open(file).convert("L")
Następnie przekonwertowałem obraz na matrycę, dzięki czemu mogę łatwo wykonać przetwarzanie obrazu za pomocą
matrix = scipy.misc.fromimage(image, 0)
Jednak kiedy to zrobię
figure()
matplotlib.pyplot.imshow(matrix)
show()
wyświetla obraz za pomocą mapy kolorów (tzn. nie jest w skali szarości).
Co ja tu robię źle?
python
matplotlib
grayscale
Ryan
źródło
źródło
_r
”.plt.imshow(im_gray,cmap='gray', vmin = 0, vmax = 255)
Spróbuj użyć mapy kolorów w skali szarości?
Np. Coś takiego
Aby wyświetlić listę colormaps, zobacz http://scipy-cookbook.readthedocs.org/items/Matplotlib_Show_colormaps.html
źródło
import matplotlib.pyplot as plt
Możesz także uruchomić raz w kodzie
Spowoduje to wyświetlenie domyślnie obrazów w skali szarości
źródło
gray()
lubgrey()
?gray
... szary to standardowa amerykańska pisownia, a szary to brytyjska pisownia dla tego samego koloru.Użyłbym metody get_cmap. Dawny.:
źródło
Odpowiedź @ unutbu jest zbliżona do właściwej odpowiedzi.
Domyślnie plt.imshow () próbuje przeskalować dane macierzy (MxN) do 0,0 ~ 1,0. A następnie zamapuj na 0 ~ 255. W przypadku większości naturalnych zdjęć jest to w porządku, nie zobaczysz inaczej. Ale jeśli masz wąski zakres wartości obrazu w pikselach, powiedz, że minimalny piksel to 156, a maksymalny piksel to 234. Szary obraz będzie wyglądał zupełnie źle. Właściwy sposób wyświetlania obrazu w kolorze szarym to
Zobaczmy przykład:
to jest oryginał : oryginał
wykorzystuje to ustawienie normy defaul, czyli None: złe zdjęcie
używa to ustawienia NoNorm, którym jest NoNorm (): prawy obrazek
źródło
Spróbuj tego:
źródło
pylab.grey()
, może został usunięty?Nie używaj interpolacji i ustaw kolor na szary.
źródło