• 大小: 94.03MB
    文件类型: .zip
    金币: 1
    下载: 0 次
    发布日期: 2023-05-24
  • 语言: Python
  • 标签: python  dlib  

资源简介

基于python dlib和sklearn的眨眼检测完整工程,详细请参考我的博客:http://blog.csdn.net/hongbin_xu/article/details/79033116。

资源截图

代码片段和文件信息

#coding=utf-8  
import numpy as np 
import cv2
import dlib
from scipy.spatial import distance
import os
from imutils import face_utils

# 计算EAR
def eye_aspect_ratio(eye):
# print(eye)
A = distance.euclidean(eye[1] eye[5])
B = distance.euclidean(eye[2] eye[4])
C = distance.euclidean(eye[0] eye[3])
ear = (A + B) / (2.0 * C)
return ear

pwd = os.getcwd()# 获取当前路径
model_path = os.path.join(pwd ‘model‘)# 模型文件夹路径
shape_detector_path = os.path.join(model_path ‘shape_predictor_68_face_landmarks.dat‘)# 人脸特征点检测模型路径

detector = dlib.get_frontal_face_detector()# 人脸检测器
predictor = dlib.shape_predictor(shape_detector_path)# 人脸特征点检测器

EYE_AR_THRESH = 0.3# EAR阈值
EYE_AR_CONSEC_frameS = 3# 当EAR小于阈值时,接连多少帧一定发生眨眼动作

# 对应特征点的序号
RIGHT_EYE_START = 37 - 1
RIGHT_EYE_END = 42 - 1
LEFT_EYE_START = 43 - 1
LEFT_EYE_END = 48 - 1

frame_counter = 0
blink_counter = 0
cap = cv2.VideoCapture(1)
while(1):
ret img = cap.read()

gray = cv2.cvtColor(img cv2.COLOR_BGR2GRAY)
rects = detector(gray 0)
for rect in rects:
print(‘-‘*20)
shape = predictor(gray rect)
points = face_utils.shape_to_np(shape)# convert the facial landmark (x y)-coordinates to a NumPy array
# points = shape.parts()
leftEye = points[LEFT_EYE_START:LEFT_EYE_END + 1]
rightEye = points[RIGHT_EYE_START:RIGHT_EYE_END + 1]
leftEAR = eye_aspect_ratio(leftEye)
rightEAR = eye_aspect_ratio(rightEye)
print(‘leftEAR = {0}‘.format(leftEAR))
print(‘rightEAR = {0}‘.format(rightEAR))

ear = (leftEAR + rightEAR) / 2.0

leftEyeHull = cv2.convexHull(leftEye)
rightEyeHull = cv2.convexHull(rightEye)
cv2.drawContours(img [leftEyeHull] -1 (0 255 0) 1)
cv2.drawContours(img [rightEyeHull] -1 (0 255 0) 1)

# for pt in leftEye:
#  pt_pos = (pt[0] pt[1])
#  cv2.circle(img pt_pos 2 (255 0 0) 1)

# for pt in rightEye:
#  pt_pos = (pt[0] pt[1])
#  cv2.circle(img pt_pos 2 (0 255 0) 1)

if ear < EYE_AR_THRESH:
frame_counter += 1
else:
if frame_counter >= EYE_AR_CONSEC_frameS:
blink_counter += 1
frame_counter = 0

cv2.putText(img “blinks:{0}“.format(blink_counter) (10 30) cv2.FONT_HERSHEY_SIMPLEX 0.7 (00255) 2)
cv2.putText(img “EAR:{:.2f}“.format(ear) (300 30) cv2.FONT_HERSHEY_SIMPLEX 0.7 (00255) 2)


cv2.imshow(“frame“ img)

if cv2.waitKey(1) & 0xFF == ord(“q“):
break

cap.release()
cv2.destroyAllWindows()


 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----
     目录           0  2018-01-11 12:07  blink_detect\
     目录           0  2018-01-11 12:07  blink_detect\bak\
     文件        1077  2018-01-11 12:05  blink_detect\bak\ear_svm.m
     文件          96  2018-01-11 12:05  blink_detect\bak\ear_svm.m_01.npy
     文件        1784  2018-01-11 12:05  blink_detect\bak\ear_svm.m_02.npy
     文件        3488  2018-01-11 12:05  blink_detect\bak\ear_svm.m_03.npy
     文件          80  2018-01-11 12:05  blink_detect\bak\ear_svm.m_04.npy
     文件          96  2018-01-11 12:05  blink_detect\bak\ear_svm.m_05.npy
     文件          88  2018-01-11 12:05  blink_detect\bak\ear_svm.m_06.npy
     文件        3488  2018-01-11 12:05  blink_detect\bak\ear_svm.m_07.npy
     文件        3488  2018-01-11 12:05  blink_detect\bak\ear_svm.m_08.npy
     文件          88  2018-01-11 12:05  blink_detect\bak\ear_svm.m_09.npy
     文件          88  2018-01-11 12:05  blink_detect\bak\ear_svm.m_10.npy
     文件          80  2018-01-11 12:05  blink_detect\bak\ear_svm.m_11.npy
     文件         890  2018-01-10 23:24  blink_detect\bak\test_close.txt
     文件         515  2018-01-10 23:23  blink_detect\bak\test_open.txt
     文件        5705  2018-01-11 00:28  blink_detect\bak\train_close.txt
     文件        5705  2018-01-11 00:28  blink_detect\bak\train_close_bak.txt
     文件        5690  2018-01-11 00:29  blink_detect\bak\train_open.txt
     文件        5690  2018-01-11 00:29  blink_detect\bak\train_open_bak.txt
     目录           0  2018-01-11 11:34  blink_detect\bak_2\
     文件        1077  2018-01-11 11:23  blink_detect\bak_2\ear_svm.m
     文件          96  2018-01-11 11:23  blink_detect\bak_2\ear_svm.m_01.npy
     文件        1656  2018-01-11 11:23  blink_detect\bak_2\ear_svm.m_02.npy
     文件        3232  2018-01-11 11:23  blink_detect\bak_2\ear_svm.m_03.npy
     文件          80  2018-01-11 11:23  blink_detect\bak_2\ear_svm.m_04.npy
     文件          96  2018-01-11 11:23  blink_detect\bak_2\ear_svm.m_05.npy
     文件          88  2018-01-11 11:23  blink_detect\bak_2\ear_svm.m_06.npy
     文件       41056  2018-01-11 11:23  blink_detect\bak_2\ear_svm.m_07.npy
     文件        3232  2018-01-11 11:23  blink_detect\bak_2\ear_svm.m_08.npy
     文件          88  2018-01-11 11:23  blink_detect\bak_2\ear_svm.m_09.npy
............此处省略63个文件信息

评论

共有 条评论