- تحضير DVR لبث RTSP
- تحضير Raspberry Pi
- تثبيت OpenCV والمكتبات الأخرى على Raspberry Pi
- برمجة Raspberry Pi لدفق فيديو RTSP من CCTV
- اختبار عارض Raspberry Pi CCTV
تحتوي معظم أماكن العمل والمباني التجارية اليوم على نظام مراقبة CCTV مثبت لمراقبة الأنشطة. ولكن في كثير من الأحيان يصعب على السلطة المختصة أو أفراد الأمن مراقبة البث المباشر لجميع الكاميرات باستمرار للبحث عن أي نشاط مشبوه. مع تقدم رؤية الكمبيوتر والتعلم الآلي في مرحلة سريعة ، فقد حان الوقت لجعل أنظمة الدوائر التلفزيونية المغلقة لدينا أكثر ذكاءً. في هذه المقالة ، سنناقش كيفية الحصول على تغذية الفيديو من DVR موجود (مثل Hikvision DVR) من خلال تدفق RTSP مع Raspberry pi باستخدام Python و OpenCV. بمجرد أن نحصل على هذا ، سنكون قادرين على الاستفادة من قوة OpenCV على موجزات الفيديو هذه لاكتشاف كائن معين ، وقراءة لوحة رقم السيارة ، والتعرف على الوجوه ، وما لا!
من أجل هذا البرنامج التعليمي ، سأستخدم Hikvision 4 Channel CCTV DVR المثبت بالفعل في المبنى. سنقوم ببث جميع شاشات الكاميرا الأربعة إلى Raspberry وعرضها على شاشة تعمل باللمس مقاس 5 بوصات حيث يمكن للمستخدم التنقل بين كل قناة حسب الحاجة. لا أعرف هذا كثيرًا ، نظرًا لقوة OpenCV ولدي خطط لتوسيع نطاقه من خلال اكتشاف الحركة ، وتنبيه فيديو bugler ، وتتبع الأشخاص ، وما إلى ذلك ، ولكن دعنا نترك كل ذلك لبرنامج تعليمي آخر.
تحضير DVR لبث RTSP
قبل الغوص في أجهزة raspberry pi ورمز Python ، من المهم التحقق مما إذا كان DVR يدعم RTSP وكيفية الوصول إليه. لقد أمضيت معظم وقتي عالقًا هنا لأن الإجراء يبدو مختلفًا لكل نوع من أنواع DVR وعليك القيام بالكثير من الزيارات والمحاولة. ولكن بمجرد اكتشاف ذلك ، فإنه يعمل مثل السحر في كل مرة.
أول شيء أولاً ، تأكد من معرفة اسم المستخدم وكلمة المرور لنظام DVR الخاص بك ، وأنه متصل بالإنترنت. في هذا البرنامج التعليمي أيضًا ، سأقوم بدفق RTSP فقط من شبكة محلية ، إذا كان لديك IP ثابت ، يمكنك القيام بإعادة توجيه المنفذ واتباع نفس الشيء للشبكات الأخرى. ولكن فيما يتعلق بهذا البرنامج التعليمي ، سنفعل كل شيء داخل الشبكة المحلية.
الخطوة 1: ابحث عن عنوان IP الخاص بجهاز DVR. بمجرد توصيل DVR بالإنترنت ، سيتم تعيين عنوان IP الخاص به. يمكنك العثور على عنوان IP هذا إما من صفحة تكوين جهاز التوجيه الخاص بك أو من شاشة DVR نفسها (على افتراض أن لديك شاشة متصلة بـ DVR). كان عنوان IP لجهاز التوجيه الخاص بي http://192.168.11.110/ (تم تغييره لأسباب تتعلق بالسلامة)
الخطوة 2: افتح أي متصفح ويب من اختيارك وأدخل عنوان IP واضغط على Enter. سيتم نقلك إلى صفحة تسجيل الدخول إلى DVR. حيث يتعين عليك إدخال اسم المستخدم (تم تغيير اسمي) وكلمة المرور لمسجل الفيديو الرقمي. سيكون اسم المستخدم الافتراضي هو المسؤول ، ولكن يجب أن تعرف كلمة المرور. تظهر شاشة تسجيل الدخول الخاصة بي لـ DVR أدناه ، وقد يختلف مظهرك.
الخطوة 3: بعد تسجيل الدخول بنجاح ، ابحث عن رقم منفذ RTSP على DVR الخاص بك ، في معظم الأوقات ، ستكون القيمة الافتراضية هي 554 ولكنها قد تتغير. أثناء تواجدك هنا ، قم بتشغيل إعدادات التكوين للتحقق مما إذا كان هناك خيار لتمكين RTSP ، إذا لم يكن الأمر كذلك ، فيمكنك تخطيه. عليك قضاء بعض الوقت هنا لأن الإجراء يختلف بناءً على DVR.
الخطوة 4: قم بإعداد رابط RTSP الخاص بك ، سيكون رابط RTSP الأساسي بالتنسيق التالي-
rtsp: //
مرة أخرى ، يعتمد الأمر على نوع DVR ، يمكنك استخدام google للعثور على النوع الذي يناسبك. الشخص الذي يعمل بالتنسيق التالي ، يمكنك أيضًا المحاولة مع هذا-
rtsp: //
أين
rtsp: // admin: [email protected]: 554 / Streaming / Channels / 202 /
الخطوة 5: قم بتشغيل البث على VLC للتأكد من أن اتصال RTSP يعمل. قم بتثبيت VLC على جهاز كمبيوتر متصل بنفس الشبكة مثل DVR ، وقم بتشغيله ، ثم اضغط على Ctrl + N لتدفق الشبكة. أدخل عنوان URL كما هو موضح أدناه واضغط على موافق.
إذا كان رابط RTSP يعمل بالطريقة التي يجب أن يعمل بها ، فيجب أن تشاهد بثًا مباشرًا من CCTV على مشغل VLC كما هو موضح أدناه. إذا ألقى خطأً ، فعليك معرفة الرابط الصحيح.
مع القيام بذلك ، لم نعد بحاجة إلى التحدث عن DVR لدينا يتيح لنا متابعة Raspberry pi.
تحضير Raspberry Pi
بعد ذلك ، نحتاج إلى إعداد raspberry pi بشاشة مقاس 5 بوصات. لن أخوض في تفاصيل ذلك لأننا قد غطينا ذلك بالفعل عدة مرات. يمكنك قراءة المقالات التالية للحصول على إرشادات-
- الابتداء مع Raspberry Pi
- شاشة 5 بوصة مع واجهة Raspberry Pi
نحن نستخدم Raspberry Pi 3 B + مع نظام تشغيل Debian Buster OS فيه. قد يكون من الجيد أيضًا استخدام Pi 4 إذا استطعت وإضافة بعض خيارات التبريد مثل غرفة التبريد أو المروحة لأنني لاحظت أن درجة الحرارة تصل إلى 70 درجة مئوية تقريبًا. لم أتبع أي إجراء تبريد حتى الآن ، ويبدو إعدادي هكذا-
تثبيت OpenCV والمكتبات الأخرى على Raspberry Pi
الخطوة التالية هي تثبيت OpenCV على Raspberry Pi. لقد ناقشنا سابقًا كيفية تجميع OpenCV على Raspberry pi.
- تثبيت OpenCV على Raspberry Pi
- الشروع في استخدام OpenCV
يمكنك إما اتباع الرابط أعلاه وتجميع OpenCV باستخدام Cmake أو مجرد تثبيته بطريقة apt-get. أوصي بما يلي إذا لم تكن مهتمًا ببرمجة OpenCV الجادة جدًا. لقد استخدمت الأوامر التالية لتثبيت OpenCV.
sudo apt update sudo apt install python3-opencv
في برنامجنا ، سنستخدم أيضًا مكتبة "cvui" لإنشاء واجهة مستخدم أساسية بزرين يسمحان لنا بالتنقل بين الشاشات الأربع. لتثبيت cvui ، اتبع الأمر أدناه.
تثبيت Python3 pip cvui
مع تثبيت كلتا الحزمتين ، يمكننا الدخول إلى البرنامج الرئيسي. تأكد من أن كلا الحزمتين المثبتتين تعملان في محاولة استيرادهما من محطة الأوامر في Pi
برمجة Raspberry Pi لدفق فيديو RTSP من CCTV
يمكن العثور على البرنامج الكامل لهذا المشروع في نهاية هذه الصفحة. شرح نفسه على النحو التالي. نبدأ البرنامج بتضمين ملفات الرأس المطلوبة.
استيراد 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 / Streaming / channels /" + channel + "02" cap = cv2.VideoCapture () cap. open (rtsp) cap.set (3 ، 640) # رقم معرف للعرض هو 3 أغطية. set (4 ، 480) # رقم معرف للارتفاع هو 480 غطاء. مجموعة (10 ، 100) # رقم معرف للسطوع هو 10qq غطاء العودة
داخل حلقة while الرئيسية ، لدينا برنامجنا لقراءة إطار من جهاز الالتقاط وتحويله إلى ملء الشاشة. سيتم استدعاء نافذة العرض في برنامجنا على أنها شاشة.
النجاح ، current_cam = cam.read () dim = (width، height) Full_frame = cv2.resize (current_cam، dim، interpolation = cv2.INTER_AREA) cv2.amedWindow ('screen'، cv2.WINDOW_NORMAL) cv2.setWindowProperty ('screen '، cv2.WND_PROP_FULLSCREEN، cv2.WINDOW_FULLSCREEN)
يلي ذلك لدينا رمز لزرين سيتم وضعهما على الشاشة. يتم استخدام الأمر cvui.button لوضع الزر في المكان المطلوب ويتم استخدام الأمر cvui.mouse للكشف عن نقرة الماوس. لدينا اثنين من عبارات if لزرين إذا تم النقر على الزر ، سيتم تنفيذ عبارة if ذات الصلة.
if (cvui.button (Full_frame، width - 100، height - 40، "Next") and cvui.mouse (cvui.CLICK)): print ("Next Button Pressed") cvui.init ('screen') cam_no = cam_no +1 إذا (cam_no> 4): cam_no = 1 del cam cam = create_camera (str (cam_no)) if (cvui.button (Full_frame، width - 200، height - 40، "Previous") and cvui.mouse (cvui. CLICK)): print ("الضغط على الزر السابق") cvui.init ('screen') cam_no = cam_no - 1 if (cam_no <1): cam_no = 4 del cam cam = create_camera (str (cam_no))
داخل عبارة if ، بناءً على الزر ، نقوم إما بزيادة أو تقليل عدد cam_no ثم حذف الكاميرا الموجودة وإنشاء كاميرا جديدة باستخدام الوظيفة التي ناقشناها أعلاه. لاحظ أيضًا أنه يتعين على cvui.init الاتصال في كل مرة لتحديث شاشة واجهة المستخدم.
الجزء الأخير من الكود هو عرض الإطار كإخراج والخروج من شاشة الإخراج عند الضغط على q. نحن فقط ننتظر ضغطة مفتاح وإذا كان المفتاح هو "q" ، فسوف ندمر جميع النوافذ.
cv2.imshow ('screen'، Full_frame) إذا كان cv2.waitKey (1) & 0xFF == ord ('q'): cv2.destroyAllWindows () break
اختبار عارض Raspberry Pi CCTV
يعد اختبار الكود أمرًا بسيطًا إلى الأمام ، قم بتشغيل pi ، ثم قم بتشغيل كود python الوارد في أسفل هذه الصفحة. تأكد من إدخال بيانات الاعتماد الصحيحة ليعمل ارتباط RTSP. إذا كنت تريد أن تكون في الجانب الآمن ، فيمكنك أيضًا تجربة استخدام مشغل VLC على Pi والذي يأتي مثبتًا مسبقًا على نظام تشغيل باستر.
إذا كان يعمل على VLC ، فيمكننا التأكد من أن pi الخاص بنا متصل بنفس الشبكة وأن رابط RTSP يعمل كما ينبغي. ثم افتح البرنامج الوارد في أسفل هذه الصفحة وقم بتشغيله باستخدام أي Python IDE. إذا تم إدخال بيانات الاعتماد بشكل صحيح ، فسترى الشاشة التالية. الذي يعرض تغذية الكاميرا الحية مع زرين في الأسفل.
نظرًا لأن الشاشة تحتوي على شاشة TFT تعمل باللمس ، يمكنك ببساطة لمس الزرين "السابق" و "التالي" للانتقال إلى الكاميرا التالية. البرنامج مكتوب للحلقة بين الكاميرات الأربع الأولى ، يمكنك تعديله بسهولة إذا كان هناك أكثر من 4 كاميرات متصلة بجهاز DVR الخاص بك.
يمكن العثور على العمل الكامل لهذا المشروع في الفيديو المرتبط أدناه. آمل أن تكون قد استمتعت بالبرنامج التعليمي وتعلمت شيئًا مفيدًا إذا كان لديك أي أسئلة ، اتركها في قسم التعليقات أو يمكنك أيضًا استخدام منتدياتنا لنشر استفساراتك الأخرى. أيضًا ، أخطط لإضافة ميزة اكتشاف الحركة وحفظ الفيديو إلى هذا الإعداد ، لذا ترقبوا ذلك أيضًا.