基于人脸关键点的疲劳检测

疲劳检测系统实现

闲暇之余做了一个简单的疲劳检测系统。

方案:首先获取重要的关键点位,需要眼部的和嘴部的。

对于眼部的如下:

分别采用眼部6个点位计算纵横比,超过连续三帧小于0.2判断为疲劳。分别采用眼部6个点位计算纵横比,超过连续三帧小于0.2判断为疲劳。分别采用眼部6个点位计算纵横比,超过连续三帧小于0.2判断为疲劳。

(注意,上图的数字序号是dlib算法的编号,与我的项目所使用的PFLD算法不同)

对于嘴部的如下:

采用嘴部8个点位计算纵横比,超过连续三帧大于0.6判断为疲劳。 

(注意,上图的数字序号是dlib算法的编号,与我的项目所使用的PFLD算法不同)

具体实现流程:

先检测到人脸上的关键点,这里采用的方案见博客《单人脸的关键点检测》 。然后根据获取到的点位信息进行判断,再显示于与一个系统界面,界面如下:

最终的所有代码如下:

import cv2
import time
import numpy as np
import tkinter as tk
from PIL import Image, ImageTk, ImageDraw, ImageFont

import torch
import onnxruntime
import torchvision.transforms as transforms


root_window = tk.Tk()
root_window.title('疲劳检测系统')  # 设置窗口title
width, height = 800, 600         # 设置窗口大小变量

# 窗口居中,获取屏幕尺寸以计算布局参数,使窗口居屏幕中央
screenwidth, screenheight = root_window.winfo_screenwidth(), root_window.winfo_screenheight()
size_geo = '%dx%d+%d+%d' % (width, height, (screenwidth - width) / 2, (screenheight - height) / 2)
root_window.geometry(size_geo)

# 一些全局的控件
global label1, label2, label3, label4, label5, label6, label7,\
    text1,\
    button1, button2, button3, \
    is_open_camera, cap, is_detection, is_exit_program


def init():
    global label1, label2, label3, label4, label5, label6, label7, \
        text1, \
        button1, button2, button3, \
        is_open_camera, cap, is_detection, is_exit_program

    # 相关参数的初始化
    is_open_camera = False   # 是否打开了摄像头
    is_detection = Fa
评论 8
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值