विषयसूची:

ओपनसीवी मूल परियोजनाएं: 5 कदम
ओपनसीवी मूल परियोजनाएं: 5 कदम

वीडियो: ओपनसीवी मूल परियोजनाएं: 5 कदम

वीडियो: ओपनसीवी मूल परियोजनाएं: 5 कदम
वीडियो: 🤓😍 Build Your Own Face Detection App in Just 5 Minutes | FaceApp Project | Computer Vision | OpenCV 2024, नवंबर
Anonim
ओपनसीवी मूल परियोजनाएं
ओपनसीवी मूल परियोजनाएं

इस परियोजना में, हम 4 सरल परियोजनाओं के माध्यम से कुछ बुनियादी ओपनसीवी कार्यक्षमता का पता लगाते हैं जिसमें एक लाइव वीडियो स्ट्रीम शामिल है। ये चेहरे की पहचान, पृष्ठभूमि को हटाना, किनारों का विशेष दृश्य प्रतिपादन और लाइव वीडियो स्ट्रीम पर धुंधला प्रभाव लागू करना है। इन परियोजनाओं को आजमाने का मेरा मुख्य उद्देश्य ओपनसीवी इंटरफेस के साथ अपने पैरों को गीला करना था, क्योंकि मैं कंप्यूटर दृष्टि के क्षेत्र में गहराई से जाने की योजना बना रहा हूं।

आपूर्ति

  • कंप्यूटर चल रहा है पायथन
  • ओपन सीवी लाइब्रेरी, नम्पी लाइब्रेरी, टिंकर लाइब्रेरी, एसआईएस लाइब्रेरी
  • कंप्यूटर से कनेक्ट करने के लिए कैमरा (यदि कंप्यूटर में पहले से एक शामिल नहीं है)
  • कार्यक्रम की अजगर फ़ाइल (इस निर्देश में शामिल)
  • हार्कास्केड xml फ़ाइल (इस निर्देश में शामिल)

चरण 1: फेसडिटेक्ट फंक्शन

फेसडिटेक्ट फंक्शन
फेसडिटेक्ट फंक्शन
फेसडिटेक्ट फंक्शन
फेसडिटेक्ट फंक्शन

यह फ़ंक्शन आपके कैमरे के वीडियो को किसी भी चेहरे पर हरे वर्गों के साथ दिखाता है जो इसे उठाता है। कोड में, हम उस वीडियो को स्टोर करने के लिए cv2. VideoCapture() फ़ंक्शन का उपयोग करते हैं जिसे हम "कैप्चर" नामक ऑब्जेक्ट में कैप्चर कर रहे हैं। CAPTURE_INDEX आपके कंप्यूटर द्वारा सेट की गई एक संख्या है जो कंप्यूटर की वीडियो इनपुट सूची में आपके कैमरे की अनुक्रमणिका से मेल खाती है। यदि आपके पास आपके कंप्यूटर से जुड़ा कोई बाहरी कैमरा नहीं है, तो 0 या 1 को काम करना चाहिए।

face_cascade ऑब्जेक्ट को cascadeClassifier फ़ंक्शन और OpenCV github में मिली "haarcascade_frontalface_default.xml" फ़ाइल का उपयोग करके इनिशियलाइज़ किया जाता है। हम इस ऑब्जेक्ट का उपयोग "चेहरे" सूची में पहचाने गए चेहरों को एक प्रविष्टि चार-तरफा-टपल के रूप में संग्रहीत करने के लिए करते हैं जो चेहरे x समन्वय, y समन्वय, चौड़ाई और ऊंचाई रखते हैं। फिर हम एक आयत बनाते हैं जो cv2.rectangle फ़ंक्शन का उपयोग करके चेहरे को पूरी तरह से घेर लेती है

इस वीडियो से, OpenCV हमारे जबकि लूप में कई छवियों को कैप्चर.रीड () का उपयोग करके कैप्चर करता है और छवि को "img" नाम के एक फ्रेम में संग्रहीत करता है। फिर प्रत्येक छवि की व्याख्या की जाती है और हमारी इच्छानुसार संशोधित किया जाता है। फेसडिटेक्ट के लिए, हम cvtColor फ़ंक्शन का उपयोग करके छवि को ग्रे बनाते हैं जो पहले पैरामीटर में दी गई किसी भी छवि को दूसरे पैरामीटर में निर्दिष्ट एक विशेष प्रकार के छवि रंग में परिवर्तित करता है। दूसरे पैरामीटर के लिए स्वीकार्य मूल्यों की सूची ऑनलाइन पाई जा सकती है। फिर हम इमेज को "डिटेक्टिंग द फेस" नाम की एक विंडो में इम्शो () फंक्शन का उपयोग करते हुए प्रदर्शित करते हैं जो विंडो के नाम और इमेज फ्रेम को प्रदर्शित करने के लिए एक स्ट्रिंग लेता है।

अंत में हम cv2.waitKey() फ़ंक्शन का उपयोग करके उपयोगकर्ता द्वारा q कुंजी दर्ज करने की प्रतीक्षा करते हैं। 0xFF मास्क का उपयोग 64 बिट कंप्यूटरों के लिए एक सम्मेलन के रूप में किया जाता है। उपयोगकर्ता द्वारा वीडियो स्ट्रीम समाप्त करने के बाद, फेसडिटेक्ट फ़ंक्शन कैप्चर ऑब्जेक्ट को मुक्त करता है और ओपनसीवी इंटरफ़ेस के तहत खोले गए किसी भी अन्य विंडो को नष्ट कर देता है। अन्य सभी कार्य एक समान डिज़ाइन संरचना का पालन करते हैं।

चरण 2: बैकग्राउंड रिमूव फंक्शन

बैकग्राउंड रिमूव फंक्शन
बैकग्राउंड रिमूव फंक्शन
बैकग्राउंड रिमूव फंक्शन
बैकग्राउंड रिमूव फंक्शन

यह फ़ंक्शन हमारे वीडियो के पृष्ठभूमि भाग को हटाने का प्रयास करता है और केवल अग्रभूमि छवि को छोड़ देता है। यह कुछ कैमरों पर काम नहीं कर सकता है, क्योंकि वे एक प्रकाश समायोजन कार्यक्षमता का उपयोग करते हैं जो तब सक्रिय होती है जब विभिन्न ऑब्जेक्ट / फॉसी फ्रेम में प्रवेश करते हैं। यदि आपका बैकग्राउंड रिमूव फंक्शन काम नहीं करता है, तो परेशान न हों- यह सिर्फ आपका कैमरा हो सकता है!

इस फ़ंक्शन का उपयोग करने के लिए, कैमरा फ्रेम से दूर कदम रखें और पृष्ठभूमि छवि को कैप्चर करने के लिए "डी" कुंजी दबाएं। यह महत्वपूर्ण है कि जिस पृष्ठभूमि को आप कैप्चर करना चाहते हैं उसमें कोई गतिशील वस्तु न हो। फिर, हम कैमरा फ्रेम में वापस कदम रख सकते हैं। यदि फ़ंक्शन काम करता है, तो उपयोगकर्ता को केवल स्वयं को फ़ंक्शन के वीडियो स्ट्रीम पर देखना चाहिए। अग्रभूमि छवि में कोई भी शोर/ब्लैक बूँदें कैमरे के प्रकाश समायोजन का परिणाम हो सकती हैं। किसी अन्य पृष्ठभूमि को कैप्चर करने के लिए, "r" कुंजी को पुन: प्रारंभ करने के लिए दबाएं, फिर "d" को फिर से दबाएं।

इस फ़ंक्शन के लिए कुछ प्रमुख टेक-अवे "ध्वज" बूलियन का उपयोग है जो उपयोगकर्ता द्वारा d बटन दबाए जाने पर तुरंत उठाया जाता है। यह पृष्ठभूमि को कैप्चर करता है और हमें इसे फ़ंक्शन द्वारा स्ट्रीम किए गए वीडियो से निकालने की अनुमति देता है। हमारा लक्ष्य पृष्ठभूमि छवि को ref_img में संग्रहीत करना है ताकि हम इसे अग्रभूमि छवि से अलग कर सकें, जो किसी भी चलती वस्तु को पकड़ती है। हम cv2.subtract() फ़ंक्शन का उपयोग पृष्ठभूमि छवि से अग्रभूमि छवि को घटाने के लिए करते हैं और इसके विपरीत, फिर तुरंत बाद दो छवियों में किसी भी मामूली अंतर को रद्द कर देते हैं। बैकग्राउंड ब्लैक आउट हो गया है।

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

चरण 3: वीडियोएज फ़ंक्शन

वीडियोएज फंक्शन
वीडियोएज फंक्शन
वीडियोएज फंक्शन
वीडियोएज फंक्शन

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

कैनी एज डिटेक्शन का उपयोग इमेज में किनारों का पता लगाने के लिए किया जाता है। यह एक ग्रे स्केल छवि को इनपुट के रूप में स्वीकार करता है और यह एक मल्टीस्टेज एल्गोरिथम का उपयोग करता है।

चरण 4: वीडियो ब्लर फंक्शन

वीडियो ब्लर फंक्शन
वीडियो ब्लर फंक्शन
वीडियो ब्लर फंक्शन
वीडियो ब्लर फंक्शन

इस फ़ंक्शन का उपयोग हमारे वीडियो स्ट्रीम में धुंधला प्रभाव जोड़ने के लिए किया जाता है। फंक्शन सिंपल हमारे फ्रेम पर गाऊसी ब्लर cv2 फंक्शन को कॉल करता है। गाऊसी ब्लर फ़ंक्शन के बारे में अधिक जानकारी यहाँ पाई जा सकती है:

opencv-python-tutroals.readthedocs.io/en/l…

चरण 5: सुधार

इस परियोजना में सबसे संवेदनशील कार्य पृष्ठभूमि हटाने का कार्य है, क्योंकि इसमें ऐसे कैमरे के उपयोग की आवश्यकता होती है जिसमें प्रकाश समायोजन कार्यक्षमता नहीं होती है। ओपनसीवी लाइब्रेरी के भीतर कार्यों का एक बेहतर सेट हो सकता है जो इस प्रकाश समायोजन के लिए जिम्मेदार हो सकता है और पृष्ठभूमि को आसानी से हटा सकता है (हरे रंग की स्क्रीन के समान)।

हम अन्य चेहरा पहचान कार्यों का भी उपयोग कर सकते हैं जो केवल लौटने (x, y) निर्देशांक के अलावा अधिक कार्यक्षमता वाले ऑब्जेक्ट उत्पन्न कर सकते हैं। शायद चेहरे को याद रखने की क्षमता वाले चेहरे की पहचान कार्यक्रम को लागू करना बहुत मुश्किल नहीं होगा।

ब्लर फ़ंक्शन को उपयोगकर्ता द्वारा सहज नियंत्रण के माध्यम से अधिक अनुकूलन बनाया जा सकता है। उदाहरण के लिए, उपयोगकर्ता धुंधला प्रभाव की तीव्रता को समायोजित करना चाह सकता है या धुंधला करने के लिए फ्रेम के भीतर एक विशिष्ट क्षेत्र का चयन कर सकता है।

सिफारिश की: