विषयसूची:

OpenCV का उपयोग करके सरल रंग-पहचान: 6 चरण
OpenCV का उपयोग करके सरल रंग-पहचान: 6 चरण

वीडियो: OpenCV का उपयोग करके सरल रंग-पहचान: 6 चरण

वीडियो: OpenCV का उपयोग करके सरल रंग-पहचान: 6 चरण
वीडियो: Color Pixels Extraction using OpenCV Python | | OpenCV Tutorial in Hindi | Computer Vision 2024, जून
Anonim
OpenCV का उपयोग करके सरल रंग-पहचान
OpenCV का उपयोग करके सरल रंग-पहचान

नमस्ते! आज मैं ओपनसीवी और पायथन का उपयोग करके लाइव वीडियो से रंग का पता लगाने की एक सरल विधि दिखाने जा रहा हूं।

मूल रूप से मैं सिर्फ आवश्यक रंग का परीक्षण करूंगा कि पृष्ठभूमि फ्रेम में मौजूद है या नहीं और ओपनसीवी मॉड्यूल का उपयोग करके मैं उस क्षेत्र को मुखौटा कर दूंगा और साथ ही फ्रेम को प्रदर्शित करूंगा।

चरण 1: हैडर फ़ाइलें

हैडर फ़ाइलें
हैडर फ़ाइलें

अब यहाँ मैंने cv2 और NumPy नामक दो शीर्षलेख फ़ाइलों का उपयोग किया है। मूल रूप से cv2 ओपनसीवी लाइब्रेरी है जो कोड में कमांड का उपयोग करते समय महत्वपूर्ण सभी सी ++ फाइलों को लोड करता है (इसमें सभी परिभाषाएं शामिल हैं)।

और Numpy एक अजगर पुस्तकालय है जो एक बहुआयामी सरणी को संग्रहीत करने के लिए आवश्यक है। हम अपने कलर रेंज को-ऑर्डिनेट्स को स्टोर करने के लिए उपयोग करेंगे।

और np के रूप में numpy मूल रूप से numpy के बजाय हर बार np का उपयोग करके हमारे कोड को थोड़ा छोटा करने में मदद करता है।

चरण 2: वीडियो कैप्चर करना

वीडियो कैप्चर करना
वीडियो कैप्चर करना

पायथन का उपयोग करते समय यह बहुत आसान है। यहां हमें सिर्फ वीडियो रिकॉर्डर चालू करने की जरूरत है ताकि वह फ्रेम रिकॉर्ड करना शुरू कर सके।

अब वीडियो कैप्चर के अंदर का मान कैमरे को इंगित करता है, मेरे मामले में कैमरा मेरे लैपटॉप से जुड़ा है, इसलिए 0.

आप सेकेंडरी कैमरा वगैरह के लिए इसी तरह 1 पर जा सकते हैं। VideoCapture इसके लिए ऑब्जेक्ट बनाता है।

चरण 3: फ़्रेम कैप्चर करना और रंग परिभाषित करना

फ़्रेम कैप्चर करना और रंग परिभाषित करना
फ़्रेम कैप्चर करना और रंग परिभाषित करना

अब यहाँ हमें कुछ करना है ताकि हम वीडियो के तत्काल फ्रेम को कैप्चर कर सकें जिससे हमें छवि निकालने में मदद मिलेगी और हम उस पर आवश्यकता के अनुसार काम कर सकते हैं।

"जबकि" लूप हमें हमारे आवश्यकता समय के लिए लूप को चलाने में मदद करेगा। अब "_, फ्रेम = कैप.रीड ()" का उपयोग कैप्चर किए गए फ्रेम की वैधता की जांच करने और इसे स्टोर करने के लिए किया जाता है। "cap.read() एक बूलियन वैरिएबल है और अगर फ्रेम को सही तरीके से पढ़ा जाता है तो यह सच हो जाता है और अगर आपको कोई फ्रेम नहीं मिलता है तो यह कोई त्रुटि नहीं दिखाएगा, आपको बस कोई नहीं मिलेगा।

अब लाइन ११ और लाइन १२ मूल रूप से उस रंग की सीमा को परिभाषित करते हैं जिसका हमें पता लगाने की आवश्यकता है। इसके लिए मैंने ब्लू कलर का इस्तेमाल किया है।

आप किसी भी रंग के साथ आगे बढ़ सकते हैं जिसके लिए आपको उस विशेष रंग के लिए केवल BGR मान टाइप करने की आवश्यकता है। सुन्न सरणियों का उपयोग करके दो सरणियों को परिभाषित करना बेहतर है क्योंकि वास्तविक दुनिया में एक विशेष रंग का पता लगाना हमारे उद्देश्य की पूर्ति नहीं करेगा, बल्कि हम नीले रंग की एक सीमा को परिभाषित करेंगे ताकि यह सीमा के भीतर पता लगाए।

इसके लिए, मैंने निम्न BGR मानों और ऊपरी BGR मानों को संग्रहीत करने वाले दो चर परिभाषित किए हैं।

चरण 4: मास्किंग और एक्सट्रैक्टिंग

मास्किंग और निकालना
मास्किंग और निकालना

अब यहाँ फ्रेम को मास्क करने और फ्रेम का रंग निकालने का मुख्य कार्य आता है। मैंने मास्किंग करने के लिए ओपनसीवी में पुस्तकालय में मौजूद पूर्वनिर्धारित आदेशों का उपयोग किया। मूल रूप से मास्किंग फ्रेम के कुछ हिस्से को हटाने की प्रक्रिया है, यानी हम उन पिक्सल को हटा देंगे जिनका रंग बीजीआर मान परिभाषित रंग सीमा में नहीं है और यह cv2.inRange द्वारा किया जाता है। बाद में, हम पिक्सेल मूल्यों के आधार पर नकाबपोश छवि पर रंग सीमा लागू करते हैं और इसके लिए, हम cv2.bitwise_and का उपयोग करेंगे, यह केवल मुखौटा और रंग श्रेणी के मूल्यों के आधार पर नकाबपोश क्षेत्र को रंग प्रदान करेगा।

cv2 के लिए लिंक। bitwise_and:

चरण 5: अंत में प्रदर्शित करना

अंत में प्रदर्शित!
अंत में प्रदर्शित!

यहां मैंने प्रत्येक फ्रेम को छवि के रूप में प्रदर्शित करने के लिए मूल cv2.imshow() का उपयोग किया है। चूंकि मेरे पास वेरिएबल्स में संग्रहीत फ्रेम डेटा है, इसलिए मैं उन्हें imshow() में पुनर्प्राप्त कर सकता हूं। यहां मैंने मूल, नकाबपोश और रंगीन तीनों फ्रेम प्रदर्शित किए हैं।

अब हमें while लूप से बाहर निकलना है। इसके लिए, हम बस cv2.wait. Key() को लागू कर सकते हैं। मूल रूप से यह प्रतिक्रिया देने से पहले प्रतीक्षा समय बताता है। इसलिए यदि आप 0 पास करते हैं तो यह असीम रूप से प्रतीक्षा करेगा और 0xFF बताता है कि आर्किटेक्चर 64 बिट है। "ऑर्ड ()" कैरेक्टर को निर्दिष्ट करता है कि जब दबाया जाता है तो ब्रेक कमांड को if ब्लॉक में निष्पादित करेगा और यह लूप से बाहर आ जाएगा।

फिर cap.release() वीडियो रिकॉर्डर को बंद कर देता है और cv2.destroyAllWindows() सभी खुली हुई विंडो को बंद कर देता है।

अगर आपको कोई समस्या है तो कृपया मुझे बताएं।

स्रोत कोड का लिंक:

सिफारिश की: