2016-10-01 7 views
8

जब मैं का उपयोग कर पैमाने ग्रे छवि परिवर्तित करने की कोशिश की:skimage: skimage.color से rgb2gray का परिणाम रंगीन छवि में क्यों होता है?

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 

Original

रंगीन छवि है कि ग्रेस्केल में नहीं है। gray

फ़ंक्शन छवि को ग्रेस्केल में क्यों परिवर्तित नहीं करता है?

+5

ग्रेस्केल-रूपांतरण सही ढंग से काम कर रहा है, लेकिन matplotlib डिफ़ॉल्ट रूप से एक और रंगमंच का उपयोग कर रहा है, जहां ग्रे के रंग नहीं हैं, लेकिन नीले और लाल के बीच कुछ चुना जाता है। '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' आप आउटपुट की जांच कर सकते हैं और देखेंगे कि छवि के सबसे हल्के हिस्से वर्तमान में लाल हैं, सबसे अंधेरे नीले हैं। – sascha

+0

वह बहुत उपयोगी था। मेरी छवि अब ग्रेस्केल में है। – kwotsin

उत्तर

10

परिणामी छवि एक ग्रेस्केल छवि है। imshow छवि तीव्रता को प्रदर्शित करने के लिए डिफ़ॉल्ट रूप से, एक प्रकार का हीटमैप (जिसे vidris कहा जाता है) का उपयोग कर रहा है। जैसा कि नीचे दिखाया बस gryascale रंग मैप निर्दिष्ट करें:

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

सभी संभव colormaps के लिए, colormap reference पर एक नजर है।

संबंधित मुद्दे