Untitled
unknown
plain_text
a year ago
2.3 kB
5
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 detectarii focului
cv2.imshow('Fire Detection', fire_frame)
# Afiseaza videoclipul original
cv2.imshow('Original Video', 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