katkarrohit203 commited on
Commit
010ee15
·
verified ·
1 Parent(s): 36103fb

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +25 -18
app.py CHANGED
@@ -1,16 +1,14 @@
1
  import streamlit as st
2
  import numpy as np
3
  import cv2 as cv
 
4
  from tensorflow.keras.preprocessing.image import img_to_array
5
  import pygame
 
6
  import time
7
 
8
- # Initialize alarm
9
- pygame.mixer.init()
10
- pygame.mixer.music.load("alarm.wav")
11
-
12
  # Load the pre-trained CNN model for drowsiness detection
13
- #model = load_model('drowiness_new6.h5')
14
 
15
  # Define labels
16
  labels = ['Closed', 'Open']
@@ -19,9 +17,18 @@ labels = ['Closed', 'Open']
19
  face_cascade = cv.CascadeClassifier(cv.data.haarcascades + "haarcascade_frontalface_default.xml")
20
  eye_cascade = cv.CascadeClassifier(cv.data.haarcascades + "haarcascade_eye.xml")
21
 
22
- st.title("Real-time Eye Detection and Drowsiness Alert")
23
- st.markdown("**Close your eyes for 3 seconds to trigger the alarm.**")
 
 
 
 
 
 
 
 
24
 
 
25
 
26
  # Initialize webcam
27
  cam = cv.VideoCapture(0)
@@ -29,10 +36,6 @@ FRAME_WINDOW = st.image([])
29
  run = st.button("Start")
30
  stop = st.button("Stop")
31
 
32
- # Variables to track eye closure
33
- drowsiness_start_time = None
34
- alarm_triggered = False
35
-
36
  # Function to preprocess the frame for model input
37
  def preprocess_frame(frame):
38
  frame = cv.resize(frame, (24, 24)) # Resize to match model input shape
@@ -42,6 +45,8 @@ def preprocess_frame(frame):
42
  return frame
43
 
44
  running = False
 
 
45
 
46
  if run:
47
  running = True
@@ -74,18 +79,21 @@ while running:
74
  center = (x + ex + ew // 2, y + ey + eh // 2)
75
  axes = (ew // 2, eh // 2)
76
  cv.ellipse(frame, center, axes, 0, 0, 360, (0, 255, 0), 2)
77
- drowsiness_start_time = None
78
  if alarm_triggered:
79
  pygame.mixer.music.stop()
80
  alarm_triggered = False
81
  else:
82
- if drowsiness_start_time is None:
83
- drowsiness_start_time = time.time()
84
- elif time.time() - drowsiness_start_time >= 2:
85
  if not alarm_triggered:
86
- pygame.mixer.music.play()
 
 
 
87
  alarm_triggered = True
88
-
89
  # Display eye status text
90
  cv.putText(frame, f'Eyes: {eye_status}', (30, 30), cv.FONT_HERSHEY_SIMPLEX, 1, (0, 255, 0), 2)
91
 
@@ -97,7 +105,6 @@ while running:
97
  running = False
98
  cam.release()
99
  cv.destroyAllWindows()
100
- pygame.mixer.quit()
101
  break
102
 
103
  cam.release()
 
1
  import streamlit as st
2
  import numpy as np
3
  import cv2 as cv
4
+ from tensorflow.keras.models import load_model
5
  from tensorflow.keras.preprocessing.image import img_to_array
6
  import pygame
7
+ import os
8
  import time
9
 
 
 
 
 
10
  # Load the pre-trained CNN model for drowsiness detection
11
+ #model = load_model('drowsiness.h5')
12
 
13
  # Define labels
14
  labels = ['Closed', 'Open']
 
17
  face_cascade = cv.CascadeClassifier(cv.data.haarcascades + "haarcascade_frontalface_default.xml")
18
  eye_cascade = cv.CascadeClassifier(cv.data.haarcascades + "haarcascade_eye.xml")
19
 
20
+ # Function to initialize audio
21
+
22
+ def initialize_audio():
23
+ try:
24
+ if not os.environ.get("DISPLAY"):
25
+ raise RuntimeError("No display found. Skipping audio initialization.")
26
+ pygame.mixer.init()
27
+ pygame.mixer.music.load("alarm.wav")
28
+ except Exception as e:
29
+ print(f"Audio initialization failed: {e}")
30
 
31
+ initialize_audio()
32
 
33
  # Initialize webcam
34
  cam = cv.VideoCapture(0)
 
36
  run = st.button("Start")
37
  stop = st.button("Stop")
38
 
 
 
 
 
39
  # Function to preprocess the frame for model input
40
  def preprocess_frame(frame):
41
  frame = cv.resize(frame, (24, 24)) # Resize to match model input shape
 
45
  return frame
46
 
47
  running = False
48
+ closed_start_time = None
49
+ alarm_triggered = False
50
 
51
  if run:
52
  running = True
 
79
  center = (x + ex + ew // 2, y + ey + eh // 2)
80
  axes = (ew // 2, eh // 2)
81
  cv.ellipse(frame, center, axes, 0, 0, 360, (0, 255, 0), 2)
82
+ closed_start_time = None
83
  if alarm_triggered:
84
  pygame.mixer.music.stop()
85
  alarm_triggered = False
86
  else:
87
+ if closed_start_time is None:
88
+ closed_start_time = time.time()
89
+ elif time.time() - closed_start_time >= 3:
90
  if not alarm_triggered:
91
+ try:
92
+ pygame.mixer.music.play()
93
+ except Exception as e:
94
+ print("Alarm triggered, but no audio device found.")
95
  alarm_triggered = True
96
+
97
  # Display eye status text
98
  cv.putText(frame, f'Eyes: {eye_status}', (30, 30), cv.FONT_HERSHEY_SIMPLEX, 1, (0, 255, 0), 2)
99
 
 
105
  running = False
106
  cam.release()
107
  cv.destroyAllWindows()
 
108
  break
109
 
110
  cam.release()