基于mediapipe深度学习的眨眼检测和计数系统python源码

发布于:2025-05-08 ⋅ 阅读:(28) ⋅ 点赞:(0)

目录

1.算法运行效果图预览

2.算法运行软件版本

3.部分核心程序

4.算法理论概述

5.算法完整程序工程


1.算法运行效果图预览

(完整程序运行后无水印)

2.算法运行软件版本

人工智能算法python程序运行环境安装步骤整理_本地ai 运行 python-CSDN博客

3.部分核心程序

(完整版代码包含详细中文注释和操作步骤视频)

...................................................................................
    while True:
        frame_counter +=1 # 帧计数器
        ret, frame = camera.read() # 从相机获取帧
        if not ret: 
            break # 没有更多帧则退出
        frame = cv.resize(frame, None, fx=1.5, fy=1.5, interpolation=cv.INTER_CUBIC)
        frame_height, frame_width= frame.shape[:2]
        rgb_frame = cv.cvtColor(frame, cv.COLOR_RGB2BGR)
        results  = face_mesh.process(rgb_frame)
        if results.multi_face_landmarks:
            mesh_coords = landmarksDetection(frame, results, False)
            ratio = blinkRatio(frame, mesh_coords, RIGHT_EYE, LEFT_EYE)
            if ratio >2.85:
                CEF_COUNTER +=1
            else:
                if CEF_COUNTER>CLOSED_EYES_FRAME:
                    TOTAL_BLINKS +=1
                    CEF_COUNTER =0
            colorBackgroundText(frame,  f'Total blink times: {TOTAL_BLINKS}', FONTS, 0.85, (10,50),2)
0Y_006

4.算法理论概述

       MediaPipe是一个跨平台的机器学习框架,用于处理和分析视频流中的图像数据。它提供了一系列的预训练模型和工具,能够检测和跟踪人体的各种特征,包括面部特征点。

       眨眼检测原理:眼睛的状态变化(睁开或闭合)会导致眼睛周围的面部特征点的位置和几何关系发生变化。通过 MediaPipe 检测出眼睛区域的关键特征点,分析这些特征点的坐标信息及其动态变化,来判断眼睛是否处于眨眼状态。例如,计算眼睛纵横比(Eye Aspect Ratio,EAR),当 EAR低于某个阈值且持续一定时间,就认为发生了一次眨眼。

       MediaPipe提供了多种用于面部特征点检测的模型,如轻量级的解决方案和高精度的模型。根据实际应用场景和计算资源的限制,选择合适的模型。例如,对于实时性要求较高的移动设备应用,可以选择轻量级模型;对于对精度要求较高的桌面应用,可以选择高精度模型。

       在MediaPipe面部特征点检测模型的基础上,构建眨眼检测模型。该模型主要基于眼睛特征点的坐标信息来判断眨眼行为。通常会计算一些与眼睛状态相关的特征参数,如眼睛纵横比(EAR)。设眼睛的六个特征点坐标为(x1​,y1​),(x2​,y2​),⋯,(x6​,y6​),则 EAR 的计算公式为:

       一般来说,当眼睛睁开时,EAR值较大;当眼睛闭合时,EAR值较小。通过大量的实验数据,可以确定一个合适的阈值T,当EAR<T时,认为眼睛处于闭合状态。

       将训练好的模型应用于实时视频流或图像序列中。对于每一帧图像,首先通过 MediaPipe 的面部特征点检测模型获取眼睛区域的特征点坐标,然后根据 EAR 公式计算眼睛纵横比。将计算得到的 EAR 值与阈值T进行比较,如果EAR<T,则认为眼睛处于闭合状态;如果EAR≥T,则认为眼睛处于睁开状态。

     眨眼计数:为了实现眨眼计数功能,需要设置一个状态变量来记录眼睛的状态(睁开或闭合)。当眼睛从睁开状态变为闭合状态时,开始计时;当眼睛从闭合状态变为睁开状态时,停止计时。如果闭合时间在一定范围内(例如,0.1秒到0.5秒之间),则认为发生了一次眨眼,眨眼计数加1。通过这种方式,可以对视频流中的眨眼行为进行实时检测和计数。

       基于MediaPipe深度学习的眨眼检测和计数系统通过利用MediaPipe强大的面部特征点检测能力,结合深度学习算法对眼睛特征点的分析,实现了对眨眼行为的准确检测和计数。通过不断的优化和改进,可以使其在各种实际应用场景中发挥重要作用。

5.算法完整程序工程

OOOOO

OOO

O


网站公告

今日签到

点亮在社区的每一天
去签到