Untitled
unknown
plain_text
a year ago
2.2 kB
4
Indexable
import cv2 import numpy as np import pygame # Importa pygame # Initializeaza pygame pentru audio pygame.init() pygame.mixer.init() alarm_sound = pygame.mixer.Sound("alarm-sound.wav") # Încarcă sunetul de alarmă def detect_fire(frame): # Converteste imaginea din BGR in HSV hsv_frame = cv2.cvtColor(frame, cv2.COLOR_BGR2HSV) # Defineste intervalul de culoare pentru detectarea focului lower_red = np.array([0, 150, 150]) upper_red = np.array([10, 255, 255]) mask1 = cv2.inRange(hsv_frame, lower_red, upper_red) # Defineste un alt interval de culoare lower_red = np.array([170, 150, 150]) upper_red = np.array([180, 255, 255]) mask2 = cv2.inRange(hsv_frame, lower_red, upper_red) # Combina mastile pentru a obtine masca finala mask = mask1 + mask2 # Aplica o operatie de eroziune pentru a elimina zgomotul minor kernel = np.ones((5, 5), np.uint8) mask = cv2.erode(mask, kernel, iterations=1) # Aplica o operatie de dilatare pe masca pentru a combina zonele adiacente detectate mask = cv2.dilate(mask, kernel, iterations=2) # Aplica masca pe cadru fire = cv2.bitwise_and(frame, frame, mask=mask) # Returneaza rezultatul return fire, mask # Captureaza video cap = cv2.VideoCapture('path_to_your_video.mp4') while True: ret, frame = cap.read() if not ret: break # Aplica functia de detectare a focului fire_frame, fire_mask = detect_fire(frame) # Verifica daca exista foc detectat si reda sunetul de alarma if np.sum(fire_mask) > 0: # Verifică dacă masca de foc are pixeli albi (foc detectat) if not pygame.mixer.get_busy(): # Verifică dacă sunetul de alarmă nu este deja în redare alarm_sound.play() # Afiseaza rezultatul cv2.imshow('Fire Detection', fire_frame) # Iesi din bucla daca utilizatorul apasa 'q' if cv2.waitKey(1) & 0xFF == ord('q'): break # Elibereaza captura si inchide toate ferestrele cap.release() cv2.destroyAllWindows() # Adauga o pauza la final pentru a evita inchiderea rapida a ferestrei CMD input("Press Enter to exit...")
Editor is loading...
Leave a Comment