विषयसूची:

फेस ट्रैकिंग डिवाइस! पायथन और अरुडिनो: 5 कदम
फेस ट्रैकिंग डिवाइस! पायथन और अरुडिनो: 5 कदम

वीडियो: फेस ट्रैकिंग डिवाइस! पायथन और अरुडिनो: 5 कदम

वीडियो: फेस ट्रैकिंग डिवाइस! पायथन और अरुडिनो: 5 कदम
वीडियो: Gesture-Controlled Servo with Python and Arduino #electronics #arduinotraining 2024, नवंबर
Anonim
Image
Image
फेस ट्रैकिंग डिवाइस! पायथन और अरुडिनो
फेस ट्रैकिंग डिवाइस! पायथन और अरुडिनो
फेस ट्रैकिंग डिवाइस! पायथन और अरुडिनो
फेस ट्रैकिंग डिवाइस! पायथन और अरुडिनो

Techovator0819My Youtube Channel द्वारा लेखक का अनुसरण करें:

IoT: वेदर बॉक्स (कस्टम अलार्म और टाइमर के साथ)
IoT: वेदर बॉक्स (कस्टम अलार्म और टाइमर के साथ)
IoT: वेदर बॉक्स (कस्टम अलार्म और टाइमर के साथ)
IoT: वेदर बॉक्स (कस्टम अलार्म और टाइमर के साथ)
बहु-कार्यात्मक स्वायत्त रोबोट: 'एसेट'
बहु-कार्यात्मक स्वायत्त रोबोट: 'एसेट'
बहु-कार्यात्मक स्वायत्त रोबोट: 'एसेट'
बहु-कार्यात्मक स्वायत्त रोबोट: 'एसेट'

के बारे में: मुझे बस नई चीजें बनाना पसंद है। जैसे माइक्रो-कंट्रोलर, मैकेनिकल इंजीनियरिंग, आर्टिफिशियल इंटेलिजेंस, कंप्यूटर साइंस और कुछ भी जो मुझे रूचि देता है। और यहाँ आपको सभी… Techovator0819 के बारे में अधिक जानकारी मिलेगी »

इस निर्देश को पढ़कर सभी को नमस्कार। यह एक फेस ट्रैकिंग डिवाइस है जो ओपनसीवी नामक पायथन लाइब्रेरी पर काम करता है। CV का मतलब 'कंप्यूटर विजन' है। फिर मैंने अपने पीसी और अपने Arduino UNO के बीच एक सीरियल इंटरफ़ेस स्थापित किया। तो इसका मतलब है कि यह पूरी तरह से पायथन पर काम नहीं करता है।

यह उपकरण फ्रेम में आपके चेहरे को पहचानता है, फिर यह कैमरे को इस तरह से स्थापित करने के लिए Arduino को कुछ आदेश भेजता है कि यह फ्रेम के अंदर रहता है! अच्छा लग रहा है? चलो ठीक उसी में कूदते हैं।

आपूर्ति

1. अरुडिनो यूएनओ

2. 2 एक्स सर्वो मोटर्स (कोई भी सर्वो मोटर ठीक रहेगा लेकिन मैंने टॉवर प्रो एसजी 90 का इस्तेमाल किया)

3. पायथन स्थापित करना

4. ओपनसीवी स्थापित करना

5. वेब कैमरा

चरण 1: पायथन और ओपनसीवी स्थापित करना

पायथन को स्थापित करना बहुत सीधा है!

www.python.org/downloads/

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

एक बार इंस्टॉलेशन पूरा करने के बाद, अपना कमांड प्रॉम्प्ट खोलें और निम्न टाइप करें:

पाइप ओपनसीवी-पायथन स्थापित करें

उसे ओपनसीवी लाइब्रेरी स्थापित करनी चाहिए। समस्या निवारण के मामले में, आप इस पृष्ठ को देख सकते हैं।

पर्यावरण और सभी पूर्वापेक्षाएँ स्थापित करने के बाद, आइए देखें कि हम वास्तव में इसे कैसे बना सकते हैं!

चरण 2: हार जैसी विशेषताएं क्या हैं?

हार जैसी विशेषताएं एक डिजिटल छवि की विशेषताएं हैं। नाम हार वेवलेट्स से आता है। ये चौकोर आकार की तरंगों के परिवार हैं जिनका उपयोग एक डिजिटल छवि में सुविधाओं की पहचान के लिए किया जाता है। हार कैस्केड मूल रूप से एक क्लासिफायरियर है जो हमें वस्तुओं का पता लगाने में मदद करता है (हमारे मामले में चेहरे में) हायर जैसी विशेषताओं का उपयोग करके।

हमारे मामले में, सरलता के लिए, हम चेहरों की पहचान करने के लिए पूर्व-प्रशिक्षित Haar Cascades का उपयोग करेंगे। आप github पेज के THIS लिंक का अनुसरण कर सकते हैं और Haar Cascade के लिए xml फ़ाइल डाउनलोड कर सकते हैं।

1. 'haarcascade_frontalface_alt.xml' पर क्लिक करें

2. कोड विंडो के ऊपरी दाएं भाग पर 'रॉ' बटन पर क्लिक करें।

3. यह आपको केवल टेक्स्ट वाले दूसरे पेज पर ले जाएगा।

4. राइट क्लिक करें और 'Save as..' को हिट करें

5. इसे उसी डायरेक्टरी या फोल्डर में सेव करें, जिसमें आप पाइथन कोड लिख रहे हैं।

चरण 3: पायथन में कोडिंग

आयात cv2

एनपी आयात सीरियल आयात समय के रूप में numpy आयात करें

हम उन सभी पुस्तकालयों को आयात करते हैं जिनकी हमें आवश्यकता होती है।

अर्द = सीरियल। सीरियल ("COM3", 9600)

हम 'ard' नामक एक सीरियल ऑब्जेक्ट बनाते हैं। हम पोर्ट नाम और बॉडरेट को पैरामीटर के रूप में भी निर्दिष्ट करते हैं।

face_cascade = cv2. CascadeClassifier('haarcascade_frontalface_default.xml')

हम अपने हार कैस्केड के लिए एक और वस्तु बनाते हैं। सुनिश्चित करें कि HaarCascade फ़ाइल उसी फ़ोल्डर में रहती है जिसमें यह पायथन प्रोग्राम है।

vid = cv2.वीडियो कैप्चर (0)

हम एक ऑब्जेक्ट बनाते हैं जो वेबकैम से वीडियो कैप्चर करता है। 0 के रूप में पैरामीटर का अर्थ है मेरे पीसी से जुड़ा पहला वेब कैमरा।

docs.opencv.org/2.4/modules/objdetect/doc/cascade_classification.html

जबकि सच:

_, फ्रेम = vid.read () # वर्तमान फ्रेम को वेरिएबल फ्रेम में पढ़ता है ग्रे = cv2.cvtColor (फ्रेम, cv2. COLOR_BGR2GRAY) # कन्वर्ट फ्रेम -> ग्रेस्केल्ड इमेज #निम्न लाइन चेहरों का पता लगाती है। #पहला पैरामीटर वह छवि है जिस पर आप #minSize=() पर पता लगाना चाहते हैं, पिक्सेल के संदर्भ में चेहरे के न्यूनतम आकार को निर्दिष्ट करता है #कैस्केड वर्गीकरण चेहरों के बारे में अधिक जानने के लिए उपरोक्त लिंक पर क्लिक करें = face_cascade.detectMultiScale(ग्रे, minSize =(८०, ८०), minNeighbors=३) #ए चेहरे का पता लगाने के लिए लूप के लिए। के लिए (x, y, w, h) फलकों में: cv2.rectangle(frame, (x, y), (x+w, y+h), (255, 0, 0), 2)#चारों ओर एक आयत बनाता है चेहरा Xpos = x+(w/2)# चेहरे के केंद्र के X निर्देशांक की गणना करता है। Ypos = y+(h/2)# यदि Xpos > 280: #निम्नलिखित कोड ब्लॉक चेक करता है कि चेहरा ard.write('L'.encode()) #on है, तो चेहरे के केंद्र के Y को-ऑर्डिनेट को कैलकुलेट करता है। समय के संबंध में बाएँ, दाएँ, ऊपर या नीचे। सोएं (0.01) #फ्रेम का केंद्र। elif Xpos 280: ard.write('D'.encode()) time.sleep(0.01) elif Ypos <200: ard.write('U'.encode()) time.sleep(0.01) और: ard.write ('S'.encode()) time.sleep(0.01) break cv2.imshow('frame',frame)#फ्रेम को अलग विंडो में दिखाता है। k = cv2.waitKey(1)&0xFF if(k == ord('q')): #if 'q' को कीबोर्ड पर दबाया जाता है, यह while लूप से बाहर निकल जाता है। टूटना

cv2.destroyAllWindows () # सभी विंडो बंद कर देता है

ard.close () #धारावाहिक संचार बंद करता है

vid.release() #वेब कैम से वीडियो प्राप्त करना बंद कर देता है।

चरण 4: Arduino की प्रोग्रामिंग

अपनी आवश्यकताओं के अनुरूप अपने हार्डवेयर सेटअप के अनुसार प्रोग्राम को बेझिझक संशोधित करें।

#शामिल

सर्वो सर्वोएक्स;

सर्वो सर्वोवाई;

इंट एक्स = ९०;

इंट वाई = ९०;

व्यर्थ व्यवस्था() {

// अपना सेटअप कोड यहां डालें, एक बार चलाने के लिए: Serial.begin(9600); सर्वोएक्स.अटैच(9); सर्वोवाई.अटैच(10); सर्वोएक्स.राइट (एक्स); सर्वोवाई।लिखें (वाई); देरी (1000); }

चार इनपुट = ""; // सीरियल इनपुट इस वेरिएबल में स्टोर होता है

शून्य लूप () {

// अपना मुख्य कोड यहां रखें, बार-बार चलाने के लिए: अगर (सीरियल.उपलब्ध ()) {// चेक करता है कि कोई डेटा सीरियल बफर इनपुट में है या नहीं। सीरियल। रीड (); // डेटा को एक चर में पढ़ता है if(input == 'U'){servoY.write(y+1); // इनपुट y + = 1 के अनुसार सर्वो कोण को समायोजित करता है; // कोण के मान को अपडेट करता है} और अगर (इनपुट == 'डी') {servoY.write (y-1); वाई - = 1; } और { सर्वोवाई.लिखें (वाई); } अगर (इनपुट == 'एल') {सर्वोएक्स.राइट (एक्स -1); एक्स - = 1; } और अगर (इनपुट == 'आर') {servoX.write(x+1); एक्स + = 1; } और {सर्वोएक्स.राइट (एक्स); } इनपुट = ""; // वेरिएबल को क्लियर करता है } // प्रोसेस रिपीट होता रहता है !!:)}

चरण 5: निष्कर्ष

यह एक अच्छा और इंटरैक्टिव तरीका है जिसके माध्यम से आप अपने Arduino प्रोजेक्ट्स में कंप्यूटर विज़न को शामिल कर सकते हैं। कंप्यूटर विजन वास्तव में काफी मजेदार है। और मुझे पूरी उम्मीद है कि आप लोगों को यह पसंद आया होगा। अगर हां तो मुझे कमेंट में बताएं। और मेरे यूट्यूब चैनल को सब्सक्राइब जरूर करें। अग्रिम धन्यवाद <3<3

youtube.com/channel/UCNOSfI_iQ7Eb7-s8CrExGfw/videos

सिफारिश की: