范文健康探索娱乐情感热点
投稿投诉
热点动态
科技财经
情感日志
励志美文
娱乐时尚
游戏搞笑
探索旅游
历史星座
健康养生
美丽育儿
范文作文
教案论文
国学影视

开车时双眼疲劳侦测报警检测python联合来实现

  1 说明
  =====
  1.1 高速上开车容易疲劳,双眼就会闭合,几秒钟可能诱发意外,甚至造成严重事故!
  1.2 既然python这么厉害,是不是可以实现报警呢?当然可以!!所以高速交警一旦发现驾驶员有双眼闭合代表疲劳,可能就会直接拨打司机的电话,告知提醒驾驶员已经疲劳,危险驾驶,建议下一个服务区强制休息,以免意外发生。
  1.3 当然上述太麻烦了,可以生成一个成品,自己放在自己的汽车上,摄像头对准自己的面部,一旦自己闭眼就会报警,一个小小的新科技产品从此就诞生了!!汽车生产制造商们注意了,可以卖钱哟。取个名字叫开始防眯眼警报狗!!哈哈哈。
  2 分析
  ====
  2.1 资料来源:竟然有巨大bug(真不该),对代码进行增加,删除,注释,排版和运行调试。https://github.com/raja434/driver-fatigue-detection-system
  2.2 对于那个巨大bug,竟然有人去问stackoverflow,也没有解决。https://stackoverflow.com/questions/53579289/run-a-certain-code-while-it-detects-something-python/53579720
  2.3 被我这个半路出家的人搞定了!!,分享出来,但是还是感谢原作者。
  3 文件
  =====
  3.1 图
  3.2 这个文件从计算机系统中搜索,安装软件复制过来:shape_predictor_68_face_landmarks.dat
  3.3 drowsiness_detection.py代码名改为这样比较正规。
  3.4 执行:终端输入:python3.8 drowsiness_detection.py --alarm=alarm.wav
  3.5 打开摄像头,睁眼识别,如果闭眼一会就会报警;如果继续睁眼,报警声就会停止;如果再闭眼,报警声还会响起......
  4 drowsiness_detection.py代码讲解
  ============================
  4.1 导入模块#第1步:导入模块 from scipy.spatial import distance as dist import imutils from imutils.video import VideoStream from imutils import face_utils from threading import Thread  import argparse import time  import dlib import cv2 import numpy as np import pyglet
  没有的模块,这样安装,本机是这样安装sudo pip3.8 install -i https://pypi.tuna.tsinghua.edu.cn/simple xxx
  本机环境:python3.8+deepin-linux深度操作系统+微软编辑器vscode;
  软件:opencv4.2.0+numpy1.19.4+dlib19.21.99
  4.2 #第2步:终端参数构建  ap = argparse.ArgumentParser() #默认为0,就是摄像头获取视频 ap.add_argument("-w", "--webcam", type=int, default=0, 	help="index of webcam on system")  #巨大的bug,原来没有这个的,我自己增加的 ap.add_argument("-a", "--alarm",  	help="index of alarm on system")  args = vars(ap.parse_args())
  4.3 eye=眼睛,ear=耳朵,怕误解将ear改为EAR=eye aspect ratio#第3步:函数定义 #报警声函数定义 def sound_alarm(path): 	# play an alarm sound 	music = pyglet.resource.media("alarm.wav") 	#bug,原来未对齐,缩进去了 	music.play() 	pyglet.app.run()  #返回双眼睑比率函数测定 def eye_aspect_ratio(eye):  	A = dist.euclidean(eye[1], eye[5]) 	B = dist.euclidean(eye[2], eye[4]) 	C = dist.euclidean(eye[0], eye[3]) 	# compute the eye aspect ratio=ear,not ear耳朵 	#ear = (A + B) / (2.0 * C) 	EAR = (A + B) / (2.0 * C) 	#return ear 	return EAR
  4.4 #第4步:参数初始化  EYE_AR_THRESH = 0.3 EYE_AR_CONSEC_FRAMES = 48  COUNTER = 0 ALARM_ON = False  #加载dlib的侦测器 print("[INFO] loading facial landmark predictor...") detector = dlib.get_frontal_face_detector()  #原来的dat名字都错了,该文件需要自己复制过来 #predictor = dlib.shape_predictor("68 face landmarks.dat") predictor = dlib.shape_predictor("shape_predictor_68_face_landmarks.dat")  #获取左右眼的坐标点信息 (lStart, lEnd) = face_utils.FACIAL_LANDMARKS_IDXS["left_eye"] (rStart, rEnd) = face_utils.FACIAL_LANDMARKS_IDXS["right_eye"]  # start the video stream thread print("[INFO] starting video stream thread...") vs = VideoStream(src=args["webcam"]).start() time.sleep(1.0)
  4.5#第5步:循环 # loop over frames from the video stream while True:  	frame = vs.read() 	#设定大小 	frame = imutils.resize(frame, width=450) 	#灰度转换 	gray = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY) 	#侦测 	# detect faces in the grayscale frame 	rects = detector(gray, 0)  	# loop over the face detections 	for rect in rects:  		shape = predictor(gray, rect) 		shape = face_utils.shape_to_np(shape)  		leftEye = shape[lStart:lEnd] 		rightEye = shape[rStart:rEnd] 		leftEAR = eye_aspect_ratio(leftEye) 		rightEAR = eye_aspect_ratio(rightEye)  		# average the eye aspect ratio together for both eyes 		#修改为大写 		#ear = (leftEAR + rightEAR) / 2.0 		EAR = (leftEAR + rightEAR) / 2.0  		leftEyeHull = cv2.convexHull(leftEye) 		rightEyeHull = cv2.convexHull(rightEye) 		cv2.drawContours(frame, [leftEyeHull], -1, (0, 255, 0), 1) 		cv2.drawContours(frame, [rightEyeHull], -1, (0, 255, 0), 1)          		#修改为大写 		#if ear < EYE_AR_THRESH: 		if EAR < EYE_AR_THRESH: 			COUNTER += 1  			if COUNTER >= EYE_AR_CONSEC_FRAMES: 				# if the alarm is not on, turn it on 				if not ALARM_ON: 					ALARM_ON = True  					if args["alarm"] != "":    #报错,已经上面修改好了 						 						t = Thread(target=sound_alarm, 							args=(args["alarm"],)) 						t.deamon = True 						t.start()  				# draw an alarm on the frame 				cv2.putText(frame, "DROWSINESS ALERT!", (10, 30), 					cv2.FONT_HERSHEY_SIMPLEX, 0.7, (0, 0, 255), 2)  		else: 			COUNTER = 0 			ALARM_ON = False          #修改为大写 		#cv2.putText(frame, "EAR: {:.2f}".format(ear), (300, 30),cv2.FONT_HERSHEY_SIMPLEX, 0.7, (0, 0, 255), 2) 		cv2.putText(frame, "EAR: {:.2f}".format(EAR), (300, 30),cv2.FONT_HERSHEY_SIMPLEX, 0.7, (0, 0, 255), 2) 	 	# show the frame 	cv2.imshow("Frame", frame) 	key = cv2.waitKey(1) & 0xFF   	#退出设置 	if key == ord("q"): 		break  #第6步:收尾和结束 # do a bit of cleanup cv2.destroyAllWindows() vs.stop()
  5 我已经亲测过,可行,视频就不上了,人丑没办法。嘻嘻。
  自己整理并分享出来,希望大家喜欢,也感谢原作者的github,别忘了给他点个星星。

东北人最爱的粉条,做成这样,比肉还好吃,老婆一人把它全吃光了东北人最爱的粉条,做成这样,比肉还好吃,老婆一人把它全吃光了都说东北人爱吃粉条,说他们最爱粉条都不为过。但把东北人最爱的粉条,做成这样,简直好吃到爆,比大鱼大肉受欢迎多了。尤其是老花生别只会炒,多1个步骤,口感香浓,孩子早餐就爱它,5分钟搞定花生别只会炒,多1个步骤,口感香浓,孩子早餐就爱它,5分钟搞定您家的花生怎么吃呢?还在吃炒花生吗?但我要告诉您,花生别只会炒,多1个步骤,好吃不上火,口感香浓细腻,用它蘸馒头,涂面面粉别用来蒸馒头了,做成这样,孩子更喜欢,喷香美味,暄软可口面粉别用来蒸馒头了,做成这样,孩子更喜欢,喷香美味,暄软可口以前老婆总是用面粉蒸馒头,但家里的发酵粉用完了之后,一直没及时补充,老婆只好放弃馒头,开始做成薄饼了。但没想到的是,孩子别吃猪肉了,这菜比猪肉好吃得多,喷香扑鼻,几天不吃就馋别吃猪肉了,这菜比猪肉好吃得多,喷香扑鼻,几天不吃就馋现在猪肉又涨价了,贵得离谱,大家都说吃不起了。其实,猪肉也没什么好吃的,至少没有这道菜好吃。这道菜就是干煸四季豆,比猪肉好吃得入秋后,我家经常这么吃,营养高,热量低,吃一次等于慢跑1小时入秋后,我家经常这么吃,营养高,热量低,吃一次等于慢跑1小时入秋后,天气转凉,大家伙的胃口也好啦,什么开胃菜,下饭菜,解馋菜都说我家的最爱。很多朋友在入秋后,都会选择进补牛肉,羊肉秋天,这水果是个宝,2元钱1斤,止咳润肺,去秋燥,孩子超爱吃秋天,这水果是个宝,2元钱1斤,止咳润肺,去秋燥,孩子超爱吃秋天到了,记得多吃这种水果。它就是个宝,遇到它可千万别错过。我每次去市场,碰见它就买,2元钱1斤,买多少都不心疼。这种水缓解秋燥,记得给家人喝这种汤,维生素是猪肉的10倍,老少皆宜缓解秋燥,记得给家人喝这种汤,维生素是猪肉的10倍,老少皆宜秋燥是秋天特有的特征之一,具体体现在皮肤干燥,唇角脱皮,咽喉发干,干咳无痰等。缓解秋燥,我有妙招。常给家人喝这种汤,清淡减肥也能吃的甜甜圈,免炸免打发,营养丰富口感好,做法超简单减肥也能吃的甜甜圈,免炸免打发,营养丰富口感好,做法超简单过节胖3斤,节后要瘦身,学会这道小吃,减肥也能吃甜品,真香小伙伴们好,我是零落,唯有美食与爱不可辜负!每逢佳节倍思亲,每次适合减肥吃的家常菜,补充蛋白质,好吃不长胖,5分钟出锅适合减肥吃的家常菜,补充蛋白质,好吃不长胖,5分钟出锅!海鲜菇这么炒,鲜美不出水,肉也不柴,儿子再也不挑食了!小伙伴们好,我是零落,唯有美食与爱不可辜负!减肥期间适合吃些高蛋白高纤西芹别直接炒,下锅之前多做一步,口感细嫩幼滑,不输大饭店西芹别直接炒,下锅之前多做一步,口感细嫩幼滑,不输大饭店!减肥多吃西芹,清香脆嫩,富含膳食纤维,好吃还不长胖,减肥还能防便秘!小伙伴们好,我是零落,唯有美食与爱不可辜负!西芹是非常减肥多吃牛肉,补充蛋白质,好吃不长胖,反而还掉秤,越吃越瘦减肥多吃牛肉,补充蛋白质,好吃不长胖,反而还掉秤,越吃越瘦!春天的时候,牛腩别炖了,这么炒着吃,Q弹软嫩有嚼劲,好吃得不得了!小伙伴们好,我是零落,唯有美食与爱不可辜负!大家都知道
孙云晓用父爱支撑孩子成长今天来谈关于父教的内容,在此之前先讲两个故事。故事一某先生是公司老板,每天公务繁忙,应酬不暇,女儿的事情自然全交给了母亲。这天父亲接到了一个女孩的电话,自称是她女儿的朋友,让他转告孙云晓让孩子在试错中走向独立孩子在成长的过程中必定要经历一些磨难。磨难是人生最好的历练,大凡有作为的人都是在磨难中成长起来的。如果大人替孩子打理好一切,化解掉所有麻烦,让其一时顺利了,却有可能会换来孩子终生的孙云晓生活感悟坚持学古诗词,家庭的文化水准将显著提升生活感悟42父母们大都希望孩子腹有诗书气自华,其实,如果真正有心如此,这是很有可能做到的。如南师大教授郦波所说,诗词教育是一种教育捷径,也是最好的家庭教育。全家人可一起学习古诗词,孙云晓玩是孩子的权利,也是孩子的天性玩是孩子的权利,也是孩子的天性有些时候,你是不是觉得自己的孩子特别贪玩?看电视打游戏玩手机,过了规定时限之后还在磨磨蹭蹭,总是想方设法地再多玩个几分钟?要想让孩子拥有快乐的童年,身孙云晓生活感悟走出去了解整个世界是孩子们的必修课生活感悟49正在中国兴起的研学旅行既是对应试教育的突围,更是素质教育的探索。其实,这是学校和家庭共同的任务。研学旅行的目标是什么?哈佛校长福斯特的观点耐人寻味当我们看到的世界大了,孙云晓在内卷的社会,孩子要克服麻将心理最近两年大家都在频繁提及一个词内卷,这个充满了竞争意味的词让很多父母陷入了焦虑,也让很多父母忘了,在社会生活中,除了要教会孩子竞争之外,更需要教会孩子合作。某年,上海梅龙镇广场以高孙云晓人生的成败在于自制经历坎坷的人或许更容易明白,人生的成败在于自制。我有一次到江苏金坛讲课,近万人听完课后缓慢地退场。等到所有的人都离开后,一个妈妈的咨询让我惊讶万分这个妈妈已经离家出走半个多月了。原朱永新关于家庭教育的八个理念,值得所有人学习父母的成长和孩子成长一样,是没有止境的过程。朱永新曾说,在所有的问题儿童身上,都可以找到他们家庭的原因家庭教育才是我们整个教育链的基础的基础,关键的关键。今天,我们为你整理了朱永新孙云晓生活感悟如果不能在孩子十岁之前教其学会做人,家庭教育就是重大失败生活感悟39儿童的言行不仅是家风的镜子,也展示出家风的鲜明烙印。作家张之路讲起在全国各地的讲课,最难忘的是小学生的言行有的先请他坐下才提问有的在身后为他捶背,说应该孝敬长辈有的女孩孙云晓生活感悟寻根过程是极好的家庭教育,也是爱国教育生活感悟2树有根,水有源,人有家族历史。对于自己的祖先不知不敬的人应当羞愧。很多人会感到无辜,因为摧毁家族传统的力量曾经难以抵挡。今天欣逢盛世,我们需要以虔诚之心认祖归宗,不仅寻找孙云晓生活感悟家庭教育能否回归美好生活,越来越成为检验家庭教育成败得失的关键标准生活感悟1101最近接受多家媒体采访,谈家庭教育立法的有关问题。这次家庭教育立法有两个关键点,一是明确了父母在家庭教育中的主体责任,二是明确了政府在家庭教育指导服务中承担主导责任,