其他
史上最强副驾驶——开车打瞌睡?Python叫醒你
The following article is from 读芯术 Author 读芯术
编辑:技术君
来源:公众号 读芯术
上一篇:“秋天的第一杯奶茶”突然刷屏!是什么梗?朋友圈里各种画风清奇
for (x,y,w,h)in faces:cv2.rectangle(frame,(x,y), (x+w, y+h), (100,100,100), 1 )
l_eye =frame[ y : y+h, x : x+w ]
cv2.putText(frame,“Open”, (10, height-20), font, 1, (255,255,255), 1, cv2.LINE_AA )
import cv2
import os
fromkeras.models
importload_model
import numpy asnp
from pygameimport mixer
import time
mixer.init()
sound =mixer.Sound( alarm.wav )
face =cv2.CascadeClassifier( haar cascade fileshaarcascade_frontalface_alt.xml )
leye =cv2.CascadeClassifier( haar cascade fileshaarcascade_lefteye_2splits.xml )
reye =cv2.CascadeClassifier( haar cascade fileshaarcascade_righteye_2splits.xml )
lbl=[ Close , Open ]
model =load_model( models/cnncat2.h5 )
path =os.getcwd()
cap = cv2.VideoCapture(0)
font =cv2.FONT_HERSHEY_COMPLEX_SMALL
count=0
score=0
thicc=2
rpred=[99]
lpred=[99]
while(True):
ret, frame = cap.read()
height,width = frame.shape[:2]
gray = cv2.cvtColor(frame,cv2.COLOR_BGR2GRAY)
faces =face.detectMultiScale(gray,minNeighbors=5,scaleFactor=1.1,minSize=(25,25))
left_eye = leye.detectMultiScale(gray)
right_eye = reye.detectMultiScale(gray)
cv2.rectangle(frame, (0,height-50) ,(200,height) , (0,0,0) , thickness=cv2.FILLED )
for (x,y,w,h) in faces:
cv2.rectangle(frame,(x,y) , (x+w,y+h) , (100,100,100) , 1 )
for (x,y,w,h) in right_eye:
r_eye=frame[y:y+h,x:x+w]
count=count+1
r_eye =cv2.cvtColor(r_eye,cv2.COLOR_BGR2GRAY)
r_eye = cv2.resize(r_eye,(24,24))
r_eye= r_eye/255
r_eye= r_eye.reshape(24,24,-1)
r_eye = np.expand_dims(r_eye,axis=0)
rpred = model.predict_classes(r_eye)
if(rpred[0]==1):
lbl= Open
if(rpred[0]==0):
lbl= Closed
break
for (x,y,w,h) in left_eye:
l_eye=frame[y:y+h,x:x+w]
count=count+1
l_eye = cv2.cvtColor(l_eye,cv2.COLOR_BGR2GRAY)
l_eye = cv2.resize(l_eye,(24,24))
l_eye= l_eye/255
l_eye=l_eye.reshape(24,24,-1)
l_eye = np.expand_dims(l_eye,axis=0)
lpred = model.predict_classes(l_eye)
if(lpred[0]==1):
lbl= Open
if(lpred[0]==0):
lbl= Closed
break
if(rpred[0]==0 and lpred[0]==0):
score=score+1
cv2.putText(frame,"Closed",(10,height-20), font,1,(255,255,255),1,cv2.LINE_AA)
# if(rpred[0]==1 or lpred[0]==1):
else:
score=score-1
cv2.putText(frame,"Open",(10,height-20), font,1,(255,255,255),1,cv2.LINE_AA)
if(score<0):
score=0
cv2.putText(frame, Score: +str(score),(100,height-20), font,1,(255,255,255),1,cv2.LINE_AA)
if(score>15):
#person is feeling sleepy so we beepthe alarm
cv2.imwrite(os.path.join(path, image.jpg ),frame)
try:
sound.play()
except: # isplaying = False
pass
if(thicc<16):
thicc= thicc+2
else:
thicc=thicc-2
if(thicc<2):
thicc=2
cv2.rectangle(frame,(0,0),(width,height),(0,0,255),thicc)
cv2.imshow( frame ,frame)
if cv2.waitKey(1) & 0xFF == ord( q ):
break
cap.release()
cv2.destroyAllWindows()
python“drowsiness detection.py”
--END--
往日热文:
Windows上也能用Swift编程了,官方编译工具安装包现已上线
10月1日之后,你新建的GitHub库默认分支不叫「master」了
喜欢本文的朋友们,欢迎长按下图关注订阅号Python人工智能技术
收看更多精彩内容
你在看吗?一起成长