skimage: Почему rgb2gray из skimage.color дает цветное изображение?

Когда я попытался преобразовать изображение в оттенки серого, используя:

from skimage.io import imread
from skimage.color import rgb2gray
mountain_r = rgb2gray(imread(os.getcwd() + '/mountain.jpg'))

#Plot
import matplotlib.pyplot as plt
plt.figure(0)
plt.imshow(mountain_r)
plt.show()

Я получил странное цветное изображение вместо серой шкалы.

Реализация функции вручную также дает мне тот же результат. Пользовательская функция:

def rgb2grey(rgb):
    if len(rgb.shape) is 3:
        return np.dot(rgb[...,:3], [0.299, 0.587, 0.114])

    else:
        print 'Current image is already in grayscale.'
        return rgb

оригинал

Цветное изображение, которое не в оттенках серого. серый

Почему функция не преобразует изображение в оттенки серого?

1 ответ

Решение

Полученное изображение в оттенках серого. Тем не мение, imshowпо умолчанию используется своего рода тепловая карта (называемая vidris) для отображения интенсивности изображения. Просто укажите цветовую карту в градациях серого, как показано ниже:

plt.imshow(mountain_r, cmap="gray")

Для всех возможных цветовых карт взгляните на ссылку цветовой карты.

Другие вопросы по тегам