Подтвердить что ты не робот

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

Оригинал

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

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

4b9b3361

Ответ 1

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

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

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