मैं matplotlib
एक RGB छवि में पढ़ने और इसे ग्रेस्केल में बदलने के लिए उपयोग करने का प्रयास कर रहा हूं ।
मतलाब में मैं इसका उपयोग करता हूं:
img = rgb2gray(imread('image.png'));
में matplotlib ट्यूटोरियल वे इसे कवर नहीं है। वे सिर्फ छवि में पढ़ते हैं
import matplotlib.image as mpimg
img = mpimg.imread('image.png')
और फिर वे सरणी को स्लाइस करते हैं, लेकिन आरजीबी को ग्रेस्केल में परिवर्तित करने के समान नहीं है जो मैं समझता हूं।
lum_img = img[:,:,0]
मुझे यह विश्वास करना मुश्किल है कि आरजीबी से ग्रे में बदलने के लिए सुन्न या मेटप्लोटिब में एक अंतर्निहित फ़ंक्शन नहीं है। क्या यह इमेज प्रोसेसिंग में एक सामान्य ऑपरेशन नहीं है?
मैंने एक बहुत ही सरल फ़ंक्शन लिखा है imread
जो 5 मिनट में उपयोग करके आयातित छवि के साथ काम करता है । यह बहुत ही अयोग्य है, लेकिन यही कारण है कि मैं एक पेशेवर कार्यान्वयन के लिए उम्मीद कर रहा था।
सेबस्टियन ने मेरे कार्य में सुधार किया है, लेकिन मैं अभी भी अंतर्निहित एक को खोजने की उम्मीद कर रहा हूं।
matlab का NTSC (NTSC / PAL) कार्यान्वयन:
import numpy as np
def rgb2gray(rgb):
r, g, b = rgb[:,:,0], rgb[:,:,1], rgb[:,:,2]
gray = 0.2989 * r + 0.5870 * g + 0.1140 * b
return gray
gray = np.mean(rgb, -1)
ठीक काम करता है। धन्यवाद। क्या इसका उपयोग नहीं करने का कोई कारण है? मैं नीचे दिए गए उत्तरों में समाधानों का उपयोग क्यों करूंगा?
np.mean(rgb, -1)
।
0.2989 * R + 0.5870 * G + 0.1140 * B
मैं मान रहा हूँ कि यह करने का मानक तरीका है।
gray = np.mean(rgb, -1)
:। शायदrgb[...,:3]
वहाँ अगर यह वास्तव में आरजीबीए है।