Почему matplotlib меняет интенсивность цвета на отображаемом изображении? - PullRequest
0 голосов
/ 21 января 2019

Я пытаюсь написать несколько кодов для обработки изображений, но столкнулся со странной проблемой.

Я хочу показать следующее изображение, уже преобразованное в оттенки серого в диапазоне от 0 до 255:

https://ibb.co/tqTPcpq

Для этого я написал этот код

img_low_cont = plt.imread("hamster.png") 
plt.imshow(img_low_cont, cmap='gray')

Но он показывает другую версию моего изображения:

https://ibb.co/Xzw3WYB

Я пытался выяснить, почему это происходит, но я не уверен. У кого-нибудь есть идеи?

Извините, что не дал больше подробностей, это именно то, что у меня есть информация. У меня было несколько часов на поиски ответа, но я не нашел ничего полезного.

1 Ответ

0 голосов
/ 21 января 2019

Документация аргументов vmin и vmax функции imshow в matplotlib дает жизненно важную подсказку о том, что происходит:

vmin , vmax : скаляр, необязательно

При использовании скалярных данных и без явных норм vmin и vmax определяют диапазон данных, который охватывает цветовая карта.По умолчанию цветовая карта охватывает весь диапазон значений предоставленных данных.vmin, vmax игнорируются, если используется параметр нормы.

Другими словами: по умолчанию интенсивность одноцветных изображений изменяется.Чтобы этого не произошло, используйте входные аргументы v=0 и vmax=255, например:

import matplotlib.pyplot as plt
img_low_cont = plt.imread("hamster.png") 
plt.imshow(img_low_cont, cmap='gray', vmin=0, vmax=255)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...