विषयसूची:
- चरण 1: हैडर फ़ाइलें
- चरण 2: वीडियो कैप्चर करना
- चरण 3: फ़्रेम कैप्चर करना और रंग परिभाषित करना
- चरण 4: मास्किंग और एक्सट्रैक्टिंग
- चरण 5: अंत में प्रदर्शित करना
- चरण 6: डेमो
वीडियो: OpenCV का उपयोग करके सरल रंग-पहचान: 6 चरण
2024 लेखक: John Day | [email protected]. अंतिम बार संशोधित: 2024-01-30 09:20
नमस्ते! आज मैं ओपनसीवी और पायथन का उपयोग करके लाइव वीडियो से रंग का पता लगाने की एक सरल विधि दिखाने जा रहा हूं।
मूल रूप से मैं सिर्फ आवश्यक रंग का परीक्षण करूंगा कि पृष्ठभूमि फ्रेम में मौजूद है या नहीं और ओपनसीवी मॉड्यूल का उपयोग करके मैं उस क्षेत्र को मुखौटा कर दूंगा और साथ ही फ्रेम को प्रदर्शित करूंगा।
चरण 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() सभी खुली हुई विंडो को बंद कर देता है।
अगर आपको कोई समस्या है तो कृपया मुझे बताएं।
स्रोत कोड का लिंक:
सिफारिश की:
DIY -- कैसे एक स्पाइडर रोबोट बनाने के लिए जिसे Arduino Uno का उपयोग करके स्मार्टफ़ोन का उपयोग करके नियंत्रित किया जा सकता है: 6 चरण
DIY || कैसे एक स्पाइडर रोबोट बनाने के लिए जिसे Arduino Uno का उपयोग करके स्मार्टफ़ोन का उपयोग करके नियंत्रित किया जा सकता है: स्पाइडर रोबोट बनाते समय, रोबोटिक्स के बारे में बहुत सी बातें सीख सकते हैं। जैसे रोबोट बनाना मनोरंजक होने के साथ-साथ चुनौतीपूर्ण भी है। इस वीडियो में हम आपको स्पाइडर रोबोट बनाने का तरीका दिखाने जा रहे हैं, जिसे हम अपने स्मार्टफोन (Androi
ATMega328 (Arduino Uno Chip) + AD8232 का उपयोग करके सरल, पोर्टेबल सतत ईसीजी / ईकेजी मॉनिटर: 3 चरण
ATMega328 (Arduino Uno Chip) + AD8232 का उपयोग करके सरल, पोर्टेबल कंटीन्यूअस ईसीजी / ईकेजी मॉनिटर: यह निर्देश पृष्ठ आपको दिखाएगा कि एक साधारण पोर्टेबल 3-लीड ईसीजी / ईकेजी मॉनिटर कैसे बनाया जाता है। मॉनिटर ईसीजी सिग्नल को मापने के लिए AD8232 ब्रेकआउट बोर्ड का उपयोग करता है और बाद के विश्लेषण के लिए इसे माइक्रोएसडी कार्ड पर सहेजता है। मुख्य आपूर्ति की आवश्यकता: 5V रिचार्जेबल
RC ने Arduino का उपयोग करके रोबोट को ट्रैक किया - चरण दर चरण: 3 चरण
Arduino का उपयोग करते हुए RC ट्रैक किए गए रोबोट - चरण दर चरण: अरे दोस्तों, मैं BangGood के एक और शानदार रोबोट चेसिस के साथ वापस आ गया हूं। आशा है कि आप हमारे पिछले प्रोजेक्ट्स - स्पिनल क्रूक्स वी1 - द जेस्चर कंट्रोल्ड रोबोट, स्पिनल क्रूक्स एल2 - अरुडिनो पिक एंड प्लेस रोबोट विथ रोबोटिक आर्म्स और द बैडलैंड ब्रॉ
Neopixel Ws2812 M5stick-C के साथ इंद्रधनुष एलईडी चमक - Arduino IDE का उपयोग करके M5stack M5stick C का उपयोग करके Neopixel Ws2812 पर इंद्रधनुष चलाना: 5 चरण
Neopixel Ws2812 M5stick-C के साथ इंद्रधनुष एलईडी चमक | Arduino IDE का उपयोग करके M5stack M5stick C का उपयोग करके Neopixel Ws2812 पर इंद्रधनुष चलाना: हाय दोस्तों इस निर्देश में हम सीखेंगे कि कैसे Arduino IDE के साथ m5stack m5stick-C डेवलपमेंट बोर्ड के साथ neopixel ws2812 LED या एलईडी स्ट्रिप या एलईडी मैट्रिक्स या एलईडी रिंग का उपयोग करना है और हम करेंगे इसके साथ एक इंद्रधनुष पैटर्न
लोगों/मनुष्यों/जानवरों/रोबोटों को वास्तव में कूल/उज्ज्वल हीट विजन (आपकी पसंद का रंग) बनाने के लिए जीआईएमपी का उपयोग करने का एक बहुत ही सरल/आसान/जटिल तरीका नहीं है: 4 कदम
लोगों/मनुष्यों/जानवरों/रोबोटों को वास्तव में कूल/उज्ज्वल हीट विजन (आपकी पसंद का रंग) बनाने के लिए GIMP का उपयोग करने का एक बहुत ही सरल/आसान/गैर-जटिल तरीका: पढ़ें…शीर्षक