├── README.md └── code.py /README.md: -------------------------------------------------------------------------------- 1 | # Drowsiness-Detector- 2 | Drowsiness Detector using Python. College Project with all Documents 3 | 4 | 5 | ## Dataset : http://dlib.net/files/shape_predictor_68_face_landmarks.dat.bz2 6 | 7 | 8 | Project code is in Python Programming 9 | 10 | you can run anywhere you want as Jupyter, Gogole collab, Visual studio code and Python IDE. 11 | 12 | # Project Includes: 13 | 1. PPT 14 | 2. Report 15 | 3. Synopsis 16 | 4. Datasets 17 | 5. Research Papers 18 | 6. Code 19 | 7. Documents 20 | 21 | 22 | # Contact : 23 | 24 | Mail: vatshayan007@gmail.com 25 | 26 | Website: https://www.cse-projects.com 27 | 28 | CSE PRojects: https://computerscienceproject.com 29 | 30 | ## Helping students on Computer Science Projects 24*7 31 | 32 | Please Star & fork If you like this Project 33 | -------------------------------------------------------------------------------- /code.py: -------------------------------------------------------------------------------- 1 | import cv2 2 | import dlib 3 | from scipy.spatial import distance 4 | 5 | def calculate_EAR(eye): 6 | A = distance.euclidean(eye[1], eye[5]) 7 | B = distance.euclidean(eye[2], eye[4]) 8 | C = distance.euclidean(eye[0], eye[3]) 9 | ear_aspect_ratio = (A+B)/(2.0*C) 10 | return ear_aspect_ratio 11 | 12 | cap = cv2.VideoCapture(0) 13 | hog_face_detector = dlib.get_frontal_face_detector() 14 | dlib_facelandmark = dlib.shape_predictor("shape_predictor_68_face_landmarks.dat") 15 | 16 | while True: 17 | _, frame = cap.read() 18 | gray = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY) 19 | 20 | faces = hog_face_detector(gray) 21 | for face in faces: 22 | 23 | face_landmarks = dlib_facelandmark(gray, face) 24 | leftEye = [] 25 | rightEye = [] 26 | 27 | for n in range(36,42): 28 | x = face_landmarks.part(n).x 29 | y = face_landmarks.part(n).y 30 | leftEye.append((x,y)) 31 | next_point = n+1 32 | if n == 41: 33 | next_point = 36 34 | x2 = face_landmarks.part(next_point).x 35 | y2 = face_landmarks.part(next_point).y 36 | cv2.line(frame,(x,y),(x2,y2),(0,255,0),1) 37 | 38 | for n in range(42,48): 39 | x = face_landmarks.part(n).x 40 | y = face_landmarks.part(n).y 41 | rightEye.append((x,y)) 42 | next_point = n+1 43 | if n == 47: 44 | next_point = 42 45 | x2 = face_landmarks.part(next_point).x 46 | y2 = face_landmarks.part(next_point).y 47 | cv2.line(frame,(x,y),(x2,y2),(0,255,0),1) 48 | 49 | left_ear = calculate_EAR(leftEye) 50 | right_ear = calculate_EAR(rightEye) 51 | 52 | EAR = (left_ear+right_ear)/2 53 | EAR = round(EAR,2) 54 | if EAR<0.26: 55 | cv2.putText(frame,"DROWSY",(20,100), 56 | cv2.FONT_HERSHEY_SIMPLEX,3,(0,0,255),4) 57 | cv2.putText(frame,"Are you Sleepy?",(20,400), 58 | cv2.FONT_HERSHEY_SIMPLEX,2,(0,0,255),4) 59 | print("Drowsy") 60 | print(EAR) 61 | 62 | cv2.imshow("Are you Sleepy", frame) 63 | 64 | key = cv2.waitKey(1) 65 | if key == 27: 66 | break 67 | cap.release() 68 | cv2.destroyAllWindows() --------------------------------------------------------------------------------