Я пытаюсь отобразить изображение в градациях серого с помощью matplotlib.pyplot.imshow () . Моя проблема в том, что изображение в градациях серого отображается в виде цветовой карты. Мне нужна оттенки серого, потому что я хочу рисовать поверх изображения цветом.
Я прочитал изображение и преобразовал его в оттенки серого, используя Image.open (). Convert ("L") в PIL
image = Image.open(file).convert("L")
Затем я преобразую изображение в матрицу, чтобы я мог легко выполнить некоторую обработку изображения, используя
matrix = scipy.misc.fromimage(image, 0)
Тем не менее, когда я делаю
figure()
matplotlib.pyplot.imshow(matrix)
show()
он отображает изображение с использованием карты цветов (то есть это не шкала серого).
Что я здесь не так делаю?
источник
_r
».plt.imshow(im_gray,cmap='gray', vmin = 0, vmax = 255)
Попробуйте использовать цветовую карту в оттенках серого?
Например, что-то вроде
Список цветовых карт см. По адресу http://scipy-cookbook.readthedocs.org/items/Matplotlib_Show_colormaps.html.
источник
import matplotlib.pyplot as plt
Вы также можете запустить один раз в своем коде
Это покажет изображения в оттенках серого по умолчанию
источник
gray()
илиgrey()
?gray
... серый - стандартное американское правописание, а серый - британское правописание для того же цвета.Я бы использовал метод get_cmap. Напр .:
источник
Ответ @ unutbu довольно близок к правильному ответу.
По умолчанию plt.imshow () будет пытаться масштабировать данные вашего массива (MxN) до 0,0 ~ 1,0. А затем сопоставьте с 0 ~ 255. Для большинства естественных снятых изображений это хорошо, вы не увидите другого. Но если у вас узкий диапазон значений изображения в пикселях, скажем, минимальный пиксель равен 156, а максимальный - 234. Серое изображение будет выглядеть совершенно неправильно. Правильный способ показать изображение в сером
Давайте посмотрим на пример:
это оригинальное изображение: оригинал
это использует настройку по умолчанию, которая является None: неправильный рис
это использует установку NoNorm, которая является NoNorm (): правая картинка
источник
попробуй это:
источник
pylab.grey()
, может быть его убрали?Не используйте интерполяцию и установите серый.
источник