- अवयव आवश्यक
- रास्पबेरी पाई में OpenCV स्थापित करना
- अन्य आवश्यक पैकेजों को स्थापित करना
- रास्पबेरी पाई प्रोग्रामिंग
- ड्राईवर ड्रोसनेस डिटेक्शन सिस्टम का परीक्षण
ट्रक ड्राइवर जो दिन और रात के समय में लंबी दूरी पर कार्गो और भारी सामग्रियों का परिवहन करते हैं, वे अक्सर नींद की कमी से पीड़ित होते हैं। थकान और उनींदापन राजमार्गों पर प्रमुख दुर्घटनाओं के कुछ प्रमुख कारण हैं। ऑटोमोबाइल उद्योग कुछ प्रौद्योगिकियों पर काम कर रहे हैं जो उनींदापन का पता लगा सकते हैं और इसके बारे में ड्राइवर को सचेत कर सकते हैं।
इस परियोजना में, हम रास्पबेरी पाई, ओपनसीवी और पाई कैमरा मॉड्यूल का उपयोग करने वाले ड्राइवरों के लिए स्लीप सेंसिंग और अलर्टिंग सिस्टम बनाने जा रहे हैं । इस प्रणाली का मूल उद्देश्य चालक की चेहरे की स्थिति और आंखों की गतिविधियों को ट्रैक करना है और यदि चालक को परेशानी महसूस हो रही है, तो सिस्टम चेतावनी संदेश को ट्रिगर करेगा। यह हमारे पिछले चेहरे के लैंडमार्क डिटेक्शन और फेस रिकग्निशन एप्लिकेशन का विस्तार है।
अवयव आवश्यक
हार्डवेयर घटक
- रसभरी पाई ३
- पाई कैमरा मॉड्यूल
- माइक्रो यूएसबी केबल
- बजर
सॉफ्टवेयर और ऑनलाइन सेवाएँ
- OpenCV
- Dlib
- अजगर ३
इस के साथ आगे बढ़ने से पहले चालक उनींदापन का पता लगाने परियोजना , पहले, हम इस परियोजना में OpenCV, imutils, dlib, Numpy, और कुछ अन्य निर्भरता स्थापित करने की आवश्यकता। OpenCV का उपयोग यहां डिजिटल इमेज प्रोसेसिंग के लिए किया जाता है। डिजिटल इमेज प्रोसेसिंग के सबसे आम एप्लिकेशन ऑब्जेक्ट डिटेक्शन, फेस रिकॉग्निशन और लोग काउंटर हैं।
यहां हम केवल स्लीप डिटेक्शन सिस्टम बनाने के लिए रास्पबेरी पाई, पाई कैमरा और बजर का उपयोग कर रहे हैं।
रास्पबेरी पाई में OpenCV स्थापित करना
OpenCV और अन्य निर्भरताओं को स्थापित करने से पहले, रास्पबेरी पाई को पूरी तरह से अपडेट करने की आवश्यकता है। रास्पबेरी पाई को उसके नवीनतम संस्करण में अपडेट करने के लिए नीचे दिए गए आदेशों का उपयोग करें:
sudo apt-get update
फिर अपने रास्पबेरी पाई पर OpenCV स्थापित करने के लिए आवश्यक निर्भरता स्थापित करने के लिए निम्न आदेशों का उपयोग करें।
sudo apt-get libhdf5-देव -y स्थापित sudo apt-get libhdf5 धारावाहिक-देव -y स्थापित sudo apt-get libatlas आधार-देव -y स्थापित sudo apt-get स्थापित libjasper-देव -y sudo apt-get libqtgui4 स्थापित -Y sudo apt-get install libqt4-test –y
अंत में, नीचे के आदेशों का उपयोग करके रास्पबेरी पाई पर ओपनसीवी स्थापित करें।
पिप 3 ओपेंनव-कंट्रीब-पाइथन == 4.1.0.25 स्थापित करें
यदि आप OpenCV के लिए नए हैं, तो रास्पबेरी पाई के साथ हमारे पिछले OpenCV ट्यूटोरियल देखें:
- रास्पबेरी पाई पर CMC का उपयोग करके OpenCV स्थापित करना
- रास्पबेरी पाई और OpenCV के साथ वास्तविक समय चेहरा पहचान
- रास्पबेरी पाई और ओपनसीवी का उपयोग करके लाइसेंस प्लेट मान्यता
- OpenCV और रास्पबेरी पाई का उपयोग करके भीड़ का आकार अनुमान
हमने शुरुआती स्तर से शुरू होने वाले ओपनसीवी ट्यूटोरियल की एक श्रृंखला भी बनाई है।
अन्य आवश्यक पैकेजों को स्थापित करना
डूबने वाले डिटेक्टर के लिए रास्पबेरी पाई को प्रोग्राम करने से पहले, अन्य आवश्यक पैकेज स्थापित करें।
Dlib इंस्टॉल करना: dlib आधुनिक टूलकिट है जिसमें मशीन लर्निंग एल्गोरिदम और वास्तविक दुनिया की समस्याओं के लिए टूल शामिल हैं। Dlib को स्थापित करने के लिए नीचे दिए गए कमांड का उपयोग करें।
pip3 स्थापित dlib
NumPy स्थापित करना: NumPy वैज्ञानिक कंप्यूटिंग के लिए मुख्य पुस्तकालय है जिसमें एक शक्तिशाली n- आयामी सरणी वस्तु होती है, C, C ++ आदि को एकीकृत करने के लिए उपकरण प्रदान करता है।
pip3 स्थापित सुन्न
Face_recognition मॉड्यूल स्थापित करना: यह पुस्तकालय पायथन या कमांड लाइन से चेहरे को पहचानने और हेरफेर करने के लिए उपयोग किया जाता है। चेहरा पहचान पुस्तकालय स्थापित करने के लिए नीचे दिए गए आदेश का उपयोग करें।
Pip3 स्थापित face_recognition
और आखिरी में, नीचे दिए गए कमांड का उपयोग करके eye_game लाइब्रेरी स्थापित करें:
pip3 आंख खेल स्थापित करें
रास्पबेरी पाई प्रोग्रामिंग
OpenCV के उपयोग से ड्रावर ड्रिग्नेस डिटेक्टर के लिए पूरा कोड पेज के अंत में दिया गया है। यहां हम बेहतर समझ के लिए कोड के कुछ महत्वपूर्ण भागों की व्याख्या कर रहे हैं।
इसलिए, हमेशा की तरह, सभी आवश्यक पुस्तकालयों को शामिल करके कोड शुरू करें।
आयात face_recognition आयात cv2 आयात nump np आयात समय आयात cv2 आयात RPi.GPIO GPIO आयात eye_game के रूप में
उसके बाद, पीआई कैमरे से वीडियो फ़ीड प्राप्त करने के लिए एक उदाहरण बनाएं। यदि आप एक से अधिक कैमरे का उपयोग कर रहे हैं, तो cv2.VideoCapture (0) फ़ंक्शन में एक के साथ शून्य बदलें ।
video_capture = cv2.VideoCapture (0)
अब अगली लाइनों में, फ़ाइल का नाम और फ़ाइल का पथ दर्ज करें। मेरे मामले में, कोड और फ़ाइल दोनों एक ही फ़ोल्डर में हैं। फिर तस्वीर में चेहरे का स्थान पाने के लिए फेस एन्कोडिंग का उपयोग करें।
img_image = face_recognition.load_image_file ("img.jpg") img_face_encoding = face_recognition.face_encodings (img_image)
उसके बाद चेहरों और उनके नाम को बचाने के लिए दो सरणियाँ बनाएं। मैं केवल एक छवि का उपयोग कर रहा हूं; आप कोड में अधिक छवियां और उनके पथ जोड़ सकते हैं।
know_face_encodings = ज्ञात_फेस_नाम =
फिर चेहरे के हिस्सों के स्थानों, चेहरे के नाम और एनकोडिंग्स को स्टोर करने के लिए कुछ चर बनाएं।
face_locations = face_encodings = face_names = process_this_frame = सच
अंदर है, जबकि समारोह, स्ट्रीमिंग वीडियो से तख्ते पर कब्जा और छोटे आकार के फ्रेम का आकार बदलने के लिए और भी चेहरा पहचानने के लिए आरजीबी रंग करने के लिए कब्जा कर लिया फ्रेम कन्वर्ट।
रिट, फ्रेम = वीडियो_कैप्ट्योर.डर () small_frame = cv2.resize (फ्रेम, (0, 0), fx = 0.25, fy = 0.25) rgb_small_frame = small_frame
उसके बाद, छवि के साथ वीडियो में चेहरे की तुलना करने के लिए चेहरे की पहचान प्रक्रिया को चलाएं। और चेहरे के हिस्सों की लोकेशन भी लें।
if process_this_frame: face_locations = face_recognition.face_locations (rgb_small_frame) face_encodings = face_recognition.face_encodings (rgb_small_frame, face_locations) cv2.imwrite (फ़ाइल, small_frame)
यदि मान्यता प्राप्त चेहरा छवि में चेहरे के साथ मेल खाता है, तो आंखों के आंदोलनों को ट्रैक करने के लिए eyegame फ़ंक्शन को कॉल करें । कोड बार-बार आंख और नेत्रगोलक की स्थिति को ट्रैक करेगा।
face_distances = face_recognition.face_distance (know_face_encodings, face_encoding) best_match_index = np.argmin (face_distances) यदि मिलान करता है: नाम = ज्ञात_फेस_नाम दिशा = eye_game.get_eyeball_direction (फ़ाइल) प्रिंट (दिशा)
यदि कोड 10 सेकंड के लिए किसी भी आंख के आंदोलन का पता नहीं लगाता है, तो यह व्यक्ति को जगाने के लिए अलार्म को ट्रिगर करेगा ।
और:: = 1 + काउंट प्रिंट (काउंट) यदि (काउंट> = 10): GPIO.output (BUZZER, GPIO.HIGH) टाइम.sleep (2) GPIO.output (BUZZER, GPIO.OW) प्रिंट ("अलर्ट!" सचेतक !! ड्राइवर की शिथिलता का पता चला ”)
फिर चेहरे के चारों ओर एक आयत बनाने और उस पर एक पाठ डालने के लिए OpenCV फ़ंक्शन का उपयोग करें। इसके अलावा, cv2.imshow फ़ंक्शन का उपयोग करके वीडियो फ़्रेम दिखाएं ।
cv2.rectangle (फ्रेम, (बाएं, ऊपर), (दाएं, नीचे), (0, 255, 0), 2) cv2.rectangle (फ्रेम, (बाएं, नीचे - 35), (दाएं, नीचे), (0), 255, 0), cv2.FILLED) फ़ॉन्ट = cv2.FONT_HERSHEY_DUPLEX cv2.putText (फ्रेम, नाम, (बाएं + 6, नीचे - 6), फ़ॉन्ट, 1.0, (0, 255, 1) cv2.imshow ('वीडियो', फ़्रेम) कोड को रोकने के लिए कुंजी 'S' सेट करें। अगर cv2.waitKey (1) & 0xFF == ord ('s'): ब्रेक
ड्राईवर ड्रोसनेस डिटेक्शन सिस्टम का परीक्षण
कोड तैयार होने के बाद, पाई कैमरा और बजर को रास्पबेरी पाई से कनेक्ट करें और कोड चलाएं। लगभग 10 सेकंड के बाद, आपके रास्पबेरी पाई कैमरे से लाइव स्ट्रीमिंग के साथ एक विंडो दिखाई देगी। जब डिवाइस चेहरे को पहचानता है, तो यह आपके नाम को फ्रेम पर प्रिंट करेगा और आंख आंदोलन को ट्रैक करना शुरू कर देगा। अब अलार्म का परीक्षण करने के लिए 7 से 8 सेकंड के लिए अपनी आँखें बंद करें। जब गिनती 10 से अधिक हो जाती है, तो यह आपको स्थिति के बारे में सचेत करते हुए एक अलार्म ट्रिगर करेगा।
इस तरह से आप OpenCV और रास्पबेरी पाई का उपयोग करके Drowsiness डिटेक्टर का निर्माण कर सकते हैं । कार्य वीडियो और कोड के लिए नीचे स्क्रॉल करें।