يواجه العديد منا تحديات الحفاظ على سلامة المنزل والممتلكات. يمكن أن تكون الحرائق أحد التحديات الخطيرة، ولكن يمكن استخدام التكنولوجيا لتعزيز إجراءات الأمان. في هذا المشروع، سنقوم بشرح كيفية إنشاء نظام بسيط باستخدام Python وOpenCV لاكتشاف الحرائق باستخدام كاميرا الويب.
مميزات المشروع:
- اكتشاف الحرائق في الوقت الحقيقي باستخدام تقنيات الرؤية الحاسوبية.
- تشغيل تنبيه صوتي عند اكتشاف الحريق.
- تسجيل الحدث وحفظ صورة للحريق المكتشف.
- استخدام OpenCV لتحليل الصور والكشف عن وجود الحريق.
المكتبات المستخدمة:
- OpenCV - لمعالجة الصور وكشف الحرائق.
تحميل OpenCV :
pip install opencv-python
الكود البرمجي:
import os try: import cv2 except ImportError: os.system('pip install opencv-python') # تحميل ملف تدريب كاستكاد للكشف عن الحرائق fire_cascade = cv2.CascadeClassifier('fire_detection.xml') # تحديد مصدر الفيديو (0 للكاميرا الرئيسية، 1 للكاميرا الخارجية إذا كانت متوفرة) video_capture = cv2.VideoCapture(0) # إنشاء مجلد "screens" إذا لم يكن موجودًا if not os.path.exists('screens'): os.makedirs('screens') # إعداد المتغير لترقيم الصور image_counter = 0 while True: # قراءة الفريم من الكاميرا ret, frame = video_capture.read() # تحويل الفريم إلى اللون الرمادي gray = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY) # كشف الحرائق في الفريم fires = fire_cascade.detectMultiScale(frame, scaleFactor=1.2, minNeighbors=5, minSize=(30, 30)) # عرض إطار الحريق إذا تم الكشف عن حريق for (x, y, w, h) in fires: cv2.rectangle(frame, (x, y), (x+w, y+h), (0, 0, 255), 2) print('تم اكتشاف حريق!') # حفظ الصورة image_name = f'screens/fire_detection_{image_counter}.png' cv2.imwrite(image_name, frame) print(f'تم حفظ الصورة: {image_name}') image_counter += 1 # تشغيل الملف الصوتي os.system('start audio.mp3') cv2.waitKey(1000) # تأخير لضمان استماع كامل للتنبيه cv2.destroyAllWindows() # إغلاق نافذة الكاميرا break # إضافة تسمية للإطار cv2.putText(frame, 'Fire Detection - By @SaMi_ye', (10, 30), cv2.FONT_HERSHEY_SIMPLEX, 1, (0, 0, 255), 2, cv2.LINE_AA) # عرض الفريم المعالج (إذا تم إظهار إطار الكاميرا) cv2.imshow('Fire Detection - By @SaMi_ye', frame) # الانتظار للضغط على زر 'q' لإنهاء البرنامج if cv2.waitKey(1) & 0xFF == ord('q'): break # إيقاف تشغيل الكاميرا وإغلاق النوافذ video_capture.release() cv2.destroyAllWindows()
يرجى الضغط على الزر أدناه لتحميل مشروع اكتشاف الحرائق: