- आरटीएसपी स्ट्रीमिंग के लिए डीवीआर तैयार करना
- अपनी रास्पबेरी पाई तैयार कर रहा है
- रास्पबेरी पाई पर ओपनसीवी और अन्य पुस्तकालय स्थापित करना
- सीसीटीवी से स्ट्रीमिंग RTSP वीडियो के लिए रास्पबेरी पाई प्रोग्रामिंग
- रास्पबेरी पाई सीसीटीवी दर्शक का परीक्षण
आज अधिकांश कार्यस्थल और व्यावसायिक भवनों में गतिविधियों की निगरानी के लिए एक सीसीटीवी निगरानी प्रणाली स्थापित है। लेकिन अक्सर संदिग्ध गतिविधि की तलाश के लिए सभी कैमरों के लाइव फीड की निगरानी के लिए अक्सर संबंधित प्राधिकरण या सुरक्षा व्यक्तियों के लिए यह कठिन होता है। कंप्यूटर विज़न और मशीन सीखने के साथ एक तेज़ चरण में, यह समय के बारे में है कि हम अपने सीसीटीवी सिस्टम को और अधिक स्मार्ट बनाते हैं। इस लेख में, हम चर्चा करेंगे कि कैसे RTSP स्ट्रीमिंग के साथ RTSP स्ट्रीमिंग के माध्यम से एक मौजूदा DVR (जैसे Hikvision DVR) से वीडियो फीड प्राप्त करने के लिए पायथन और OpenCV का उपयोग कर । एक बार जब हम इसे प्राप्त कर लेते हैं, तो हम किसी विशेष ऑब्जेक्ट का पता लगाने के लिए इन वीडियो फीड पर OpenCV की शक्ति का लाभ उठाने में सक्षम होंगे, वाहन की नंबर प्लेट, चेहरे की पहचान, और क्या नहीं!
इस ट्यूटोरियल के लिए, मैं एक Hikvision 4 चैनल CCTV DVR का उपयोग करूंगा जो पहले से ही भवन में स्थापित है। हम रास्पबेरी के लिए सभी 4 कैमरा स्क्रीन स्ट्रीमिंग करेंगे और इसे 5 इंच की टच स्क्रीन डिस्प्ले पर प्रदर्शित करेंगे जहां उपयोगकर्ता प्रत्येक चैनल के बीच आवश्यकतानुसार बदलाव कर सकता है। मैं इसे ज्यादा नहीं जानता, ओपनसीवी की शक्ति को देखते हुए और मेरे पास इसे गति का पता लगाने, बुगलर वीडियो अलर्ट, व्यक्ति ट्रैकिंग आदि के साथ स्केल करने की योजना है, लेकिन चलो एक और ट्यूटोरियल के लिए वह सब छोड़ दें।
आरटीएसपी स्ट्रीमिंग के लिए डीवीआर तैयार करना
इससे पहले कि हम रास्पबेरी पाई हार्डवेयर और अजगर कोड में गोता लगाएँ, यह देखना महत्वपूर्ण है कि क्या डीवीआर आरटीएसपी का समर्थन करता है और इसे कैसे एक्सेस करता है। मैंने अपना अधिकांश समय यहीं पर बिताया क्योंकि प्रक्रिया प्रत्येक प्रकार के डीवीआर के लिए अलग-अलग प्रतीत होती है और आपको बहुत सारे हिट और प्रयास करने होंगे। लेकिन एक बार जब आप इसका पता लगा लेते हैं, तो यह हर बार आकर्षण की तरह काम करता है।
सबसे पहले, यह सुनिश्चित करें कि आप अपने DVR प्रणाली के उपयोगकर्ता नाम और पासवर्ड को जानते हैं, और यह इंटरनेट से जुड़ा है। इस ट्यूटोरियल में भी, मैं केवल एक स्थानीय नेटवर्क से आरटीएसपी स्ट्रीमिंग करूंगा, यदि आपके पास एक स्थिर आईपी है, तो आप पोर्ट अग्रेषण कर सकते हैं और अन्य नेटवर्क के लिए भी इसका अनुसरण कर सकते हैं। लेकिन जहां तक इस ट्यूटोरियल का संबंध है, हम स्थानीय नेटवर्क के अंदर सब कुछ कर रहे हैं।
चरण 1: अपने डीवीआर का आईपी पता खोजें। एक बार डीवीआर इंटरनेट से जुड़ा हुआ है, इसे अपना आईपी पता सौंपा जाएगा। आप इस आईपी पते को अपने राउटर कॉन्फ़िगरेशन पेज से या अपने डीवीआर स्क्रीन से ही पा सकते हैं (यह मानते हुए कि आपके पास डीवीआर से जुड़ा एक मॉनिटर है)। मेरे राउटर का IP पता http://192.168.11.110/ (सुरक्षा कारणों से बदला गया) था
चरण 2: अपनी पसंद का कोई भी वेब ब्राउजर खोलें और आईपी एड्रेस डालें और एंटर करें। आपको डीवीआर लॉगिन पृष्ठ पर ले जाया जाएगा। जहां आपको अपने DVR के लिए यूजरनेम (माइन चेंजेड) और पासवर्ड डालना होगा। डिफ़ॉल्ट उपयोगकर्ता नाम व्यवस्थापक होगा, लेकिन पासवर्ड आपको जानना होगा। DVR के लिए मेरा लॉगिन स्क्रीन नीचे दिखाया गया है, आपकी उपस्थिति में अंतर हो सकता है।
चरण 3: एक सफल लॉगिन के बाद, अपने डीवीआर पर आरटीएसपी पोर्ट नंबर की तलाश करें, ज्यादातर बार, डिफ़ॉल्ट मूल्य 554 होगा, लेकिन यह बदल सकता है। जब आप यहां हैं, तो यह देखने के लिए कि क्या आप इसे छोड़ सकते हैं, आरटीएसपी को सक्षम करने का कोई विकल्प है, यह देखने के लिए कॉन्फ़िगरेशन सेटिंग्स के साथ खेलते हैं। डीवीआर पर आधारित प्रक्रिया अलग होने के कारण आपको कुछ समय यहां बिताना होगा।
चरण 4: अपना RTSP लिंक तैयार करें, मूल RTSP लिंक निम्नलिखित प्रारूप में होगा-
rtsp: //
फिर से, यह डीवीआर के प्रकार पर निर्भर करता है, आप उस Google को उपयोग कर सकते हैं जो आपके लिए काम करेगा। जिस काम के लिए नीचे प्रारूप था, आप इसके साथ भी कोशिश कर सकते हैं-
rtsp: //
कहाँ पे
rtsp: // admin: [email protected]: 554 / स्ट्रीमिंग / चैनल / 202 /
चरण 5: यह सुनिश्चित करने के लिए कि आपका RTSP कनेक्शन काम कर रहा है, VLC पर स्ट्रीम खेलें। एक कंप्यूटर पर VLC स्थापित करें जो DVR के समान नेटवर्क से जुड़ा है, इसे लॉन्च करें, और नेटवर्क स्ट्रीमिंग के लिए Ctrl + N दबाएं । नीचे दिखाए अनुसार URL दर्ज करें और ठीक दबाएँ।
यदि आरटीएसपी लिंक उस तरह से काम कर रहा है, जैसा आपको नीचे दिखाया गया है, तो आपको वीएलसी प्लेयर पर अपने सीसीटीवी की लाइव स्ट्रीम देखनी चाहिए। यदि यह एक त्रुटि फेंकता है तो आपको सही लिंक का पता लगाना होगा।
ऐसा किए जाने के साथ, हमें अपने रास्पबेरी पाई के साथ अपने डीवीआर के बारे में बात करने की आवश्यकता नहीं है।
अपनी रास्पबेरी पाई तैयार कर रहा है
अगला, हमें 5-इंच की डिस्प्ले के साथ अपनी रास्पबेरी पाई स्थापित करने की आवश्यकता है। मैं उस के विवरण में नहीं जा रहा हूं क्योंकि हमने पहले ही कई बार कवर किया है। मार्गदर्शन के लिए आप निम्न लेख पढ़ सकते हैं-
- रास्पबेरी पाई के साथ शुरुआत करना
- रास्पबेरी पाई के साथ 5 इंच के डिस्प्ले को इंटरफैस करना
हम इसमें डेबियन बस्टर ओएस के साथ रास्पबेरी पाई 3 बी + का उपयोग कर रहे हैं। पाई 4 का उपयोग करना भी एक अच्छा विचार हो सकता है यदि आप कर सकते हैं और कुछ ठंडा विकल्पों में भी जोड़ सकते हैं जैसे कि हीटसिंक या फैन क्योंकि मैं लगभग 70 * C तक पहुंचने वाले तापमान पर ध्यान देता हूं। मैंने अब तक किसी भी शीतलन प्रक्रिया का पालन नहीं किया, और मेरा सेट-अप इस तरह दिखता है-
रास्पबेरी पाई पर ओपनसीवी और अन्य पुस्तकालय स्थापित करना
अगला कदम रास्पबेरी पाई पर ओपनसीवी स्थापित करना है। हमने पहले चर्चा की है कि रास्पबेरी पाई पर ओपनसीवी को कैसे संकलित किया जाए।
- रास्पबेरी पाई पर OpenCV स्थापित करना
- ओपनसीवी के साथ शुरुआत करना
आप या तो उपरोक्त लिंक का अनुसरण कर सकते हैं और Cmake का उपयोग करके OpenCV को संकलित कर सकते हैं या इसे केवल apt-get पद्धति से इंस्टॉल कर सकते हैं। यदि आप बहुत गंभीर OpenCV प्रोग्रामिंग में नहीं हैं तो मैं बाद में सलाह दूंगा। मैंने OpenCV को स्थापित करने के लिए निम्न आदेशों का उपयोग किया है।
sudo apt update sudo apt install python3-opencv
हमारे कार्यक्रम में, हम "cvui" लाइब्रेरी का उपयोग दो बटनों के साथ एक बुनियादी यूआई बनाने के लिए भी करेंगे, जो हमें चार स्क्रीन के बीच नेविगेट करने की अनुमति देगा। Cvui स्थापित करने के लिए नीचे दिए गए आदेश का पालन करें।
Python3 पाइप स्थापित cvui
दोनों पैकेज स्थापित होने के साथ, हम मुख्य कार्यक्रम में शामिल हो सकते हैं। सुनिश्चित करें कि दोनों स्थापित पैकेज पाई के कमांड टर्मिनल से उन्हें आयात करने की कोशिश कर रहे हैं।
सीसीटीवी से स्ट्रीमिंग RTSP वीडियो के लिए रास्पबेरी पाई प्रोग्रामिंग
इस परियोजना का पूरा कार्यक्रम इस पृष्ठ के अंत में पाया जा सकता है। उसी की व्याख्या इस प्रकार है। हम आवश्यक हेडर फ़ाइलों को शामिल करके कार्यक्रम शुरू करते हैं।
आयात cv2 आयात cvui
कार्यक्रम के अगले भाग में कुछ संपादन की आवश्यकता होती है। आपको अपने DVR का उपयोगकर्ता नाम और पासवर्ड दर्ज करना होगा। 5 इंच के प्रदर्शन के लिए, चौड़ाई और ऊंचाई क्रमशः 800 और 480 है, इसलिए हमने उसी में प्रवेश किया है।
rtsp_username = "admin" rtsp_password = "aswinth347653" चौड़ाई = 800 ऊँचाई = 480 cam_no = 1
आगे बढ़ते हुए, हमारे पास एक ऐसा फंक्शन है, जो एक कैमरा बनाता है, जिसका उपयोग हर बार हम उस कैमरा नंबर को बदलने में करते हैं जिसे देखना पड़ता है।
def create_camera (चैनल): rtsp = "rtsp: //" + rtsp_username + ":" + rtsp_password + "@ 192.168.29.100: 554 / स्ट्रीमिंग / चैनल /" + चैनल + "02" cv2.VideoCapture ()).open (rtsp) cap.set (3, 640) चौड़ाई के लिए # आईडी नंबर 3 cap.set (4, 480) # ऊंचाई के लिए # आईडी नंबर 480 cap.set (10, 100) चमक के लिए # आईडी नंबर 10qq है वापसी टोपी
लूप करते समय मुख्य के अंदर, हमारे पास कैप्चर डिवाइस से एक फ्रेम पढ़ने और इसे पूर्ण स्क्रीन में बदलने का हमारा कार्यक्रम है। हमारे कार्यक्रम में प्रदर्शन विंडो को स्क्रीन के रूप में कहा जाएगा।
सफलता, current_cam = cam.read () dim = (चौड़ाई, ऊँचाई) Full_frame = cv2.resize (current_cam, dim, interpolation = cv2.INTER_AREA) cv2.onymWindow ('स्क्रीन', cv2.WINDOW_NORMAL) cv2.setWindowProperty (स्क्रीन ', cv2.WND_PROP_FULLSCREEN, cv2.WINDOW_FULLSCREEN)
इसके बाद हमारे पास दो बटन के लिए कोड है जिसे स्क्रीन पर रखा जाएगा। कमांड cvui.button का उपयोग बटन को एक आवश्यक स्थान पर रखने के लिए किया जाता है और माउस क्लिक का पता लगाने के लिए कमांड cvui.mouse का उपयोग किया जाता है। हमारे पास दो हैं यदि दो बटन के लिए स्टेटमेंट हैं यदि बटन पर क्लिक किया गया है, तो संबंधित यदि स्टेटमेंट निष्पादित किया जाएगा।
if (cvui.button (Full_frame, चौड़ाई - 100, ऊँचाई - 40, "अगला") और cvui.mouse (cvui.CLICK): प्रिंट ("अगला बटन दबाया") cvui.init ('स्क्रीन') cam_no = cam_no +1 अगर (कैम_नो> 4): कैम_नो = 1 डेल कैम कैम = create_camera (str (कैम_नो)) यदि (cvui.button (Full_frame, चौड़ाई - 200, ऊंचाई - 40, "पिछला") और cvui.mouse (cvui)। क्लिक करें): प्रिंट ("पिछला बटन दबाया गया") cvui.init ('स्क्रीन') कैम_नो = कैम_नो - 1 यदि (कैम_नो <1): कैम_नो = 4 डेल कैम कैम = create_camera (स्ट्रैट (कैम_नो))
अगर स्टेटमेंट के अंदर, बटन के आधार पर हम या तो कैम_नो काउंट को बढ़ाते हैं या घटाते हैं और फिर मौजूदा कैम को हटाते हैं और हमारे द्वारा ऊपर चर्चा की गई फ़ंक्शन का उपयोग करके एक नया कैम बनाते हैं। इसके अलावा, ध्यान दें कि UI स्क्रीन को ताज़ा करने के लिए cvui.init को हर बार कॉल करना होगा।
कोड का अंतिम भाग फ्रेम को आउटपुट के रूप में प्रदर्शित करना है और आउटपुट स्क्रीन से बाहर निकलने के लिए जब q दबाया जाता है। हम बस एक कीस्ट्रोक की प्रतीक्षा करते हैं और यदि कुंजी 'q' है, तो हम सभी विंडो को नष्ट कर देंगे।
cv2.imshow ('स्क्रीन', Full_frame) यदि cv2.waitKey (1) और 0xFF == ord ('q'): cv2.destroyAllWindows () ब्रेक
रास्पबेरी पाई सीसीटीवी दर्शक का परीक्षण
कोड का परीक्षण करना बहुत सीधा है, पी को शक्ति देना, और इस पृष्ठ के निचले भाग में दिए गए अजगर कोड को लॉन्च करना। सुनिश्चित करें कि आपने काम करने के लिए RTSP लिंक के लिए सही क्रेडेंशियल्स दर्ज किए हैं। यदि आप सुरक्षित पक्ष में रहना चाहते हैं, तो आप पाई पर वीएलसी प्लेयर का उपयोग करने का भी प्रयास कर सकते हैं जो बस्टर ओएस पर पहले से इंस्टॉल आता है।
यदि यह वीएलसी पर काम करता है, तो हम यह सुनिश्चित कर सकते हैं कि हमारा पीआई उसी नेटवर्क से जुड़ा है और आरटीएसपी लिंक उसी तरह काम कर रहा है जैसा उसे करना चाहिए। फिर इस पृष्ठ के नीचे दिए गए प्रोग्राम को खोलें और किसी भी अजगर आईडीई का उपयोग करके इसे लॉन्च करें। यदि क्रेडेंशियल सही ढंग से दर्ज किए गए हैं, तो आप निम्न स्क्रीन देखेंगे। जो बॉटम में दो बटन के साथ लाइव कैमरा फीड दिखाता है।
चूंकि स्क्रीन में TFT टच स्क्रीन है, इसलिए आप अगले कैमरे पर जाने के लिए बस "पिछले" और "अगले" बटन को छू सकते हैं। कार्यक्रम को पहले चार कैमरों के बीच लूप करने के लिए लिखा गया है, यदि आप अपने डीवीआर से जुड़े 4 से अधिक कैमरे हैं, तो आप इसे आसानी से संशोधित कर सकते हैं।
इस परियोजना का पूरा काम नीचे दिए गए वीडियो में पाया जा सकता है। आशा है कि आपने ट्यूटोरियल का आनंद लिया है और कुछ उपयोगी सीखा है यदि आपके कोई प्रश्न हैं, तो उन्हें टिप्पणी अनुभाग में छोड़ दें या आप हमारे मंचों का उपयोग करके अपनी अन्य क्वायर पोस्ट कर सकते हैं। इसके अलावा, मैं इस सेटअप में मोशन डिटेक्शन और वीडियो सेविंग फीचर जोड़ने की योजना बना रहा हूं, इसलिए इसके लिए भी तैयार रहें।