drive_control/main.py

45 lines
1.6 KiB
Python

import cv2
from playsound import playsound
face_cascade = cv2.CascadeClassifier('haarcascade_frontalface_default.xml')
eyes_cascade = cv2.CascadeClassifier('haarcascade_eye_tree_eyeglasses.xml')
video = cv2.VideoCapture("video.avi")
frame_counter = 0
video_frames_count = video.get(cv2.CAP_PROP_FRAME_COUNT)
video_fps = video.get(cv2.CAP_PROP_FPS)
thresh_hold = 2
eyes_closed_time = 0
eyes_closed_time_sec = 0
while True:
ret, frame = video.read()
faces = face_cascade.detectMultiScale(frame, 1.1, 5)
frame_counter += 1
for (x, y, w, h) in faces:
eyes_color = frame[y:y + h, x:x + w]
eyes = eyes_cascade.detectMultiScale(eyes_color, 1.1, 5, minSize=(50, 50))
if len(eyes) < 2:
eyes_closed_time += 1
eyes_closed_time_sec = eyes_closed_time / video_fps
if (eyes_closed_time_sec) >= thresh_hold:
eyes_closed_time = 0
playsound('wakeup.mp3', False)
print('You fall asleep.')
else:
eyes_closed_time = 0
eyes_closed_time_sec = 0
cv2.rectangle(frame, (5, 5), (215, 80), (0, 0, 0), -1)
cv2.rectangle(frame, (10, 10), (210, 50), (255, 255, 255), -1)
cv2.rectangle(frame, (10, 10), (int(eyes_closed_time_sec / thresh_hold * 200) + 10, 50), (0, 0, 255), -1)
cv2.putText(frame, "Somnolence", (10, 70), cv2.FONT_HERSHEY_PLAIN, 1, (255, 255, 255))
cv2.imshow('Drive control', frame)
if frame_counter == video_frames_count:
frame_counter = 0
video.set(cv2.CAP_PROP_POS_FRAMES, 0)
if cv2.waitKey(25) & 0xFF == ord('q'):
break
video.release()
cv2.destroyAllWindows()