2016-10-01 16 views
8

kullanıyorum gri skala görüntü dönüştürmek çalıştığında: skimage: Neden skimage.color'dan rgb2gray renkli bir görüntüyle sonuçlanıyor?

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() 

yerine gri ölçekli bir garip renkli bir görüntü var.

Bu işlevi manuel olarak uygulamak aynı sonucu verir. özel fonksiyonudur: gri tonlu değil

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 

Original

Renkli görüntüsü. gray

Bu işlev neden görüntüyü gri tonlamaya çevirmiyor?

+5

gri tonlama-dönüşüm doğru çalıştığından, ama sadece mavi ve kırmızı arasında değil grinin tonları, ama bir şey seçilir varsayılan olarak başka renk haritası matplotlib kullanıyor. Imshow'u deneyin (cmap = 'Grays') '' '. Çıkışı kontrol edebilir ve görüntünün en açık kısımlarının kırmızı, en koyu mavi olduğunu görürsünüz. – sascha

+0

Bu çok yardımcı oldu. Görüntüüm şimdi greyscale'de. – kwotsin

cevap

10

Ortaya çıkan görüntü gri tonlamalı bir görüntüdür. imshow, varsayılan olarak, görüntü yoğunluklarını görüntülemek için bir çeşit ısı haritası (vidris denir) kullanır. aşağıda gösterildiği gibi sadece gryascale renk haritası belirtin:

tüm olası renk haritaları için

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

, colormap reference de bakabilirsiniz.

İlgili konular