2010-01-23 21 views
33

के साथ कलर स्पेस का पता लगाएं ओपनसीवी के साथ मैं अपनी छवि का रंग स्थान कैसे देख सकता हूं?ओपनसीवी

मैं इसे आरजीबी है, cvCvtColor का उपयोग कर एक दूसरे से() फ़ंक्शन को

+0

मैं नीचे देखता हूं कि आप एक फोन से छवियों को खींच रहे हैं। वे किस प्रारूप में हैं? यह अब नहीं लगता है कि आप वास्तविक 'IplImage' structs खींच रहे हैं - आप छवियों को OpenCV में कैसे प्राप्त कर रहे हैं? – ezod

+0

यहां तक ​​कि मुझे आश्चर्य है कि क्या मैं अपने वेबकैम से जो छवियां ले रहा हूं उसे आरजीबी या बीजीआर के रूप में सहेजा गया है? (क्या आपको किसी भी मौके से अपना समाधान मिल गया?) –

उत्तर

17

कन्वर्ट करने के लिए इससे पहले कि

धन्यवाद दुर्भाग्य से, OpenCV रंग स्थान के रूप में संकेत किसी भी प्रकार प्रदान नहीं करता है सुनिश्चित हो करना चाहते हैं IplImage संरचना में, इसलिए यदि आप अंधेरे से कहीं से IplImage उठाते हैं तो यह जानने का कोई तरीका नहीं है कि यह कैसे एन्कोड किया गया था। इसके अलावा, कोई एल्गोरिदम निश्चित रूप से आपको बता सकता है कि क्या किसी छवि को एचएसवी बनाम आरजीबी के रूप में व्याख्या किया जाना चाहिए - यह बस मशीन पर बाइट्स का एक गुच्छा है (this एचएसवी या आरजीबी होना चाहिए?)। मैं आपको इस जानकारी का ट्रैक रखने में मदद के लिए अपने IplImages को किसी अन्य स्ट्रक्चर (या यहां तक ​​कि सी ++ क्लास टेम्पलेट्स!) में लपेटने की सलाह देता हूं। यदि आप वास्तव में हताश हैं और आप केवल एक निश्चित प्रकार की छवियों (आउटडोर दृश्यों, कार्यालयों, चेहरों, आदि) के साथ काम कर रहे हैं तो आप अपनी छवियों पर कुछ आंकड़ों की गणना करने का प्रयास कर सकते हैं (उदाहरण के लिए प्राकृतिक आरजीबी छवियों के लिए हिस्टोग्राम आंकड़े बनाएं और कुछ प्राकृतिक एचएसवी छवियां), और फिर अपनी छवि के करीब होने वाली रंगीन जगह की तुलना करके अपनी पूरी अज्ञात छवि को वर्गीकृत करने का प्रयास करें।

+0

धन्यवाद, इसलिए इन तस्वीरों को Google एंड्रॉइड का उपयोग करके एक स्मार्ट फोन द्वारा लिया जाता है। मुझे लगता है कि वे आरजीबी छवियां हैं, क्या यह सही है? आरजीबी सबसे आम रंग स्थान सही है? धन्यवाद – aneuryzm

+2

फिर, वास्तव में छवियों को प्रदर्शित किए बिना बताने का कोई तरीका नहीं है, लेकिन मुझे लगता है कि आरजीबी एक बहुत ही सुरक्षित धारणा है - ज्यादातर लोग सोचते हैं कि जब वे तीन चैनल रंग स्थान के बारे में बात करते हैं। अगर यह कुछ और था तो मैं बहुत आश्चर्यचकित हूं। – rcv

3

IplImage struct में colorModel नामक एक फ़ील्ड है जिसमें 4 वर्ण शामिल हैं। दुर्भाग्यवश, ओपनसीवी इस क्षेत्र को अनदेखा करता है। लेकिन आप विभिन्न रंग मॉडल का ट्रैक रखने के लिए इस क्षेत्र का उपयोग कर सकते हैं।

6

txandi एक दिलचस्प बिंदु बनाता है। ओपनसीवी में एक बीजीआर रंगस्थान है जिसका उपयोग डिफ़ॉल्ट रूप से किया जाता है। यह आरजीबी रंगस्थान के समान है सिवाय इसके कि बी और आर चैनल छवि में शारीरिक रूप से स्विच किए जाते हैं। यदि आपके लिए भौतिक चैनल ऑर्डरिंग महत्वपूर्ण है, तो आपको अपनी छवि को इस फ़ंक्शन के साथ कनवर्ट करना होगा: cvCvtColor (defaultBGR, imageRGB, CV_BGR2RGB)।

2

Boatzart के रूप में कहा, वहाँ प्रोग्राम के रूप में, तीन रंग चैनलों का निरीक्षण से रंग स्थान का पता लगाने के जब तक आप है छवि सामग्री की एक प्रायोरी ज्ञान (जैसे, वहाँ छवि जिसका रंग है में एक मार्कर है कोई विधि नहीं है जानने वाला)। यदि आप अज्ञात स्रोतों से छवियों को स्वीकार करेंगे, तो आपको उपयोगकर्ता को उनकी छवि का रंग स्थान निर्दिष्ट करने की अनुमति देनी होगी। आरजीबी मानना ​​एक अच्छा डिफ़ॉल्ट होगा।

यदि आप डिस्प्ले से पहले किसी भी पिक्सेल रंग को संशोधित करते हैं, और आप एक गैर-ओपनसीवी व्यूअर का उपयोग कर रहे हैं, तो आपको अपने सभी रंग फ़िल्टर चलाने के बाद शायद cvCvtColor(src,dst,CV_BGR2RGB) का उपयोग करना चाहिए। यदि आप दर्शक के लिए ओपनसीवी का उपयोग कर रहे हैं या छवियों को फ़ाइल में सहेज रहे हैं, तो आपको यह सुनिश्चित करना चाहिए कि वे बीजीआर रंग स्थान में हैं।