Skip to content

EdwinVan/Monitor

Repository files navigation

cascade.py 这段代码是一个驾驶员疲劳检测系统,它使用计算机视觉和机器学习技术来监测驾驶员的眼睛和嘴巴的状态,以判断驾驶员是否处于警觉状态。

首先 需要安装 Visual Studio 及桌面C++ 生成工具 和 python

依赖性: opencv-python,dlib,scikit-learn

以下是代码的主要部分:

  1. 导入所需库cv2用于图像处理,dlib用于人脸和面部特征点检测,numpy用于数值计算。

  2. 定义人脸识别器:使用OpenCV的Haar级联分类器来检测视频帧中的人脸。

  3. 定义dlib人脸关键点检测器:使用预训练的模型shape_predictor_68_face_landmarks.dat来检测人脸的68个关键点。

  4. 定义EAR和MAR计算函数:EAR(眼睛纵横比)和MAR(嘴巴纵横比)是用于判断眼睛和嘴巴状态的度量。

  5. 定义SVM模型:使用预训练的支持向量机模型svm_model.pkl来预测驾驶员的状态。

  6. 视频采集:使用OpenCV的VideoCapture函数来捕获笔记本摄像头的视频流。

  7. 人脸检测和关键点检测:在每一帧中检测人脸,并在每个检测到的人脸上检测关键点。

  8. 计算EAR和MAR值:对于每个检测到的人脸,计算其眼睛和嘴巴的EAR和MAR值。

  9. 预测驾驶员状态:使用SVM模型预测驾驶员的状态。

  10. 显示结果:在视频帧上显示预测结果。如果驾驶员被判断为疲劳(EAR和MAR值超过某个阈值),则在屏幕上显示"Alert",否则显示"Normal"。这可以提醒驾驶员保持警觉,避免疲劳驾驶。

这个程序是一个实时的驾驶员疲劳检测系统,可以用于提高道路安全。但请注意,这只是一个基本的实现,实际应用可能需要更复杂的算法和更准确的模型。此外,这个程序需要摄像头和适当的环境光照才能正常工作。如果在运行程序时遇到问题,可能需要检查这些因素。

关于如何训练svm_model.pkl,你可以使用scikit-learn库中的SVM分类器,然后使用pickle库将训练好的模型保存到文件。learn.py是一个简单的示例。

你应该找到合适的模型,训练参数和检测参数按实际需求调整

cascade:基础版本

main.py:改进版

About

驾驶员疲劳检测系统

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages