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")
Для всех возможных цветовых карт взгляните на ссылку цветовой карты.