2021-05-29 15:30:09 索煒達電子 4287
文件編號:A60
文件大?。?/strong>80M
開發(fā)環(huán)境:Python3.8、OpenCV4.5、dlib
猿創(chuàng)承諾:該項目親測正常運行,需遠程調(diào)試部署需另外收費,確保正常使用,不能正常使用全額退款。
簡要概述:疲勞檢測原理
因為人在疲倦時大概會產(chǎn)生兩種狀態(tài): 眨眼:正常人的眼睛每分鐘大約要眨動10-15次,
每次眨眼大概0.2-0.4秒,如果疲倦時眨眼次數(shù)會增多,速度也會變慢。打哈欠:此時嘴
會長大而且會保持一定的狀態(tài)。因此檢測人是否疲勞可以從眼睛的開合度,眨眼頻率,以
及嘴巴張合程度來判斷一個人是否疲勞。
檢測工具
dlib :一個很經(jīng)典的用于圖像處理的開源庫,shape_predictor_68_face_landmarks.dat是一個用于人臉68個關(guān)鍵點檢測的dat模型庫,使用這個模型庫可以很方便地進行人臉檢測,并進行簡單的應用。
代碼思路
第一步:使用dlib.get_frontal_face_detector() 獲得臉部位置檢測器
第二步:使用dlib.shape_predictor獲得臉部特征位置檢測器
第三步:分別獲取左右眼面部標志的索引
第四步:打開cv2 本地攝像頭
第五步:從視頻流進行循環(huán),讀取圖片,并對圖片做維度擴大,并進灰度化
第六步:使用detector(gray, 0) 進行臉部位置檢測
第七步:循環(huán)臉部位置信息,使用predictor(gray, rect)獲得臉部特征位置的信息
第八步:將臉部特征信息轉(zhuǎn)換為數(shù)組array的格式
第九步:提取左眼和右眼坐標
第十步:構(gòu)造函數(shù)計算左右眼的EAR值,使用平均值作為最終的EAR
第十一步:使用cv2.convexHull獲得凸包位置,使用drawContours畫出輪廓位置進行畫圖操作
第十二步:進行畫圖操作,用矩形框標注人臉
第十三步:分別計算左眼和右眼的評分求平均作為最終的評分,如果小于閾值,則加1,如果連續(xù)3次都小于閾值,則表示進行了一次眨眼活動
第十四步:進行畫圖操作,68個特征點標識
第十五步:進行畫圖操作,同時使用cv2.putText將眨眼次數(shù)進行顯示
第十六步:統(tǒng)計總眨眼次數(shù)大于50次屏幕顯示睡著。
np.linalg.norm: 0.284s
dist.euclidean: 0.596s
所以看出np.linalg.norm()函數(shù)的運算速度要比dist.euclidean()快一點。所以用前者
來測量眼睛和嘴巴的歐氏距離。
按需寫作:
演示視頻:
點擊查看:系統(tǒng)演示視頻 提取碼:61ic
運行結(jié)果:
遠程協(xié)助:
溫馨提示:索煒達.猿創(chuàng)官方提供收費遠程協(xié)助,確保您項目運行成功。
點擊查看:遠程協(xié)助相關(guān)事項
我們提供完整項目文件清單如下:
文件目錄
├ 1.項目源碼
├ 2.運行截圖
└ 3.演示視頻