基于Python和OpenCV的疲劳检测系统设计与实现

项目运行

需要先安装Python的相关依赖:pymysql,Django==3.2.8,pillow 使用pip install 安装

第一步:创建数据库

第二步:执行SQL语句,.sql文件,运行该文件中的SQL语句

第三步:修改源代码中的settings.py文件,改成自己的mysql数据库用户名和密码

第四步:运行命令:python manage.py runserver 8000

第五步:打开浏览器查看http://127.0.0.1:8000

毕设帮助,指导,本源码分享(见文末)

系统介绍:

本系统是一款基于Python编程语言和OpenCV图像处理库开发的疲劳检测系统,旨在通过分析人脸图像来判断测试者的疲劳程度。系统通过检测测试者的眼睛闭合程度、眨眼频次以及面部表情来表征测试者的疲劳程度,并通过Mysql数据库存储和管理图像识别数据。

整体功能包含:
  • 用户登录与注册
  • 实时人脸图像捕捉与分析
  • 疲劳程度评估与预警
  • 数据存储与管理
前台模块:
  • 登录/注册页面:用户可以进行系统登录或注册新账户
  • 图片识别界面:用户可以通过摄像头进行实时人脸图像捕捉
  • 照片分析界面:展示用户眼睛状态、打哈欠占比等疲劳分析数据
后台模块:
  • 照片管理界面:管理用户上传的图像内容,包括删除异常图片
  • 用户管理界面:修改用户信息,新增用户等操作

功能截图:

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

代码实现:


def register(request):"""注册账号:return:"""try:name = request.POST.get('username')passwd = request.POST.get('password')phone = request.POST.get('phone')user = User.objects.filter(name=name)if user:return JsonResponse({'message': '用户已存在,请直接登录'}, status=403)User.objects.create(name=name,password=passwd,phone=phone,role=2,description='')response_data = {'message': '注册成功'}return JsonResponse(response_data)except Exception as e:print(e)return JsonResponse({'message': '注册失败'}, status=401)def password(request):username = request.session['username']role = int(request.session['role'])user_id = request.session['user_id']return render(request, 'modify_password.html', locals())def get_user(request):"""获取用户列表信息 | 模糊查询:param request::return:"""keyword = request.GET.get('name')page = request.GET.get("page", '')limit = request.GET.get("limit", '')role_id = request.GET.get('position', '')response_data = {}response_data['code'] = 0response_data['msg'] = ''data = []if keyword is None:results_obj = User.objects.all()else:results_obj = User.objects.filter(name__contains=keyword).all()paginator = Paginator(results_obj, limit)results = paginator.page(page)if results:for user in results:record = {"id": user.id,"name": user.name,"password": user.password,"phone": user.phone,"role": user.role,'create_time': user.create_time.strftime('%Y-%m-%d %H:%m:%S'),"desc": user.description,}data.append(record)response_data['count'] = len(results_obj)response_data['data'] = datareturn JsonResponse(response_data)def user(request):"""跳转用户页面"""username = request.session['username']role = int(request.session['role'])user_id = request.session['user_id']return render(request, 'user.html', locals())def login_check(request):"""登录校验"""response_data = {}name = request.POST.get('username')password = request.POST.get('password')user = User.objects.filter(name=name, password=password).first()info = {}if user:# 将用户名存入session中request.session["username"] = user.namerequest.session["role"] = user.rolerequest.session["user_id"] = user.idresponse_data['message'] = '登录成功'return JsonResponse(response_data, status=201)else:return JsonResponse({'message': '用户名或者密码不正确'}, status=401)def edit_user(request):"""修改用户"""response_data = {}user_id = request.POST.get('id')username = request.POST.get('username')phone = request.POST.get('phone')desc = request.POST.get('desc')User.objects.filter(id=user_id).update(name=username,desc=desc,phone=phone)response_data['msg'] = 'success'return JsonResponse(response_data, status=201)def del_user(request):"""删除用户"""user_id = request.POST.get('id')result = User.objects.filter(id=user_id).first()try:if not result:response_data = {'error': '删除失败!', 'message': '找不到id为%s' % user_id}return JsonResponse(response_data, status=403)result.delete()response_data = {'message': '删除成功!'}return JsonResponse(response_data, status=201)except Exception as e:response_data = {'message': '删除失败!'}return JsonResponse(response_data, status=403)def change_password(request):"""修改密码"""old_pwd = request.POST.get('password1')username = request.session["username"]user_obj = User.objects.filter(name=username).first()if user_obj.password == old_pwd:User.objects.filter(name=username).update(password=request.POST.get('password2'))return JsonResponse({'msg': '修改成功!', 'error': 0})else:return JsonResponse({'msg': '旧密码不正确,请重新输入', 'error': 403})

论文参考:

在这里插入图片描述

源码获取:

源码下载

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/883038.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

《Windows PE》6.4.2 远程注入DLL

实验四十七:远程注入DLL 写一个窗口程序,将一个dll通过远程注入的方法,注入到第三章的示例程序PEHeader.exe中,支持32位和64位PE。 ●dll.c /*------------------------------------------------------------------------FileNam…

《PP-OCRv1》论文精读:PaddleOCR是目前SOTA级别的OCR开源技术(截止2024年10月)

PP-OCR: A Practical Ultra Lightweight OCR System论文地址PP-OCRv2: Bag of Tricks for Ultra Lightweight OCR System论文地址PP-OCRv3: More Attempts for the Improvement of Ultra Lightweight OCR System论文地址PaddleOCR Github OCR工具库 43.5K个star PP-OCRv1由百度…

矩阵基础知识

矩阵定义 矩阵的定义 1.矩阵是由一组数按照矩形排列而成的数表。矩阵通常用大写字母表示,例如 AA、BB 等。矩阵中的每个数称为矩阵的元素或元。 一个 mn的矩阵 AA 可以表示为: 其中 aij表示矩阵 A中第i行第j列的元素。 矩阵的维度 1.矩阵的维度由它…

经典功率谱估计的原理及MATLAB仿真(自相关函数BT法、周期图法、bartlett法、welch法)

经典功率谱估计的原理及MATLAB仿真(自相关函数BT法、周期图法、bartlett法、welch法) 文章目录 前言一、BT法二、周期图法三、Bartlett法四、welch法五、MATLAB仿真六、MATLAB详细代码总结 前言 经典功率谱估计方法包括BT法(对自相关函数求傅…

python实现onvif协议下控制摄像头变焦,以及融合人形识别与跟踪控制

#1024程序员节 | 征文# 这两天才因为项目需要,对网络摄像头的视频采集以及实现人形识别与跟踪技术。对于onvif协议自然起先也没有任何的了解。但是购买的摄像头是SONY网络头是用在其他地方的。因为前期支持探究项目解决方案,就直接拿来做demo测试使用。 …

react18中在列表项中如何使用useRef来获取每项的dom对象

在react中获取dom节点都知道用ref,但是在一个列表循环中,这样做是行不通的,需要做进一步的数据处理。 实现效果 需求:点击每张图片,当前图片出现在可视区域。 代码实现 .box{border: 1px solid #000;list-style: …

微前端架构新选择:micro-app 框架一文全解析

目录 前言技术方案沙箱withiframe 环境变量主应用生命周期子应用生命周期初始化更新卸载缓存 JS 沙箱样式隔离元素隔离路由系统⭐数据通信⭐资源系统预加载umd 模式其他功能调试工具 前言 https://micro-zoe.github.io/micro-app/ micro-app 是由京东前端团队推出的一款微前端…

基于springboot美食商城推荐系统

基于springboot美食商城推荐系统 开发语言:Java 框架:springboot JDK版本:JDK1.8 服务器:tomcat7 数据库:mysql 5.7 数据库工具:Navicat11 开发软件:idea 源码获取:https://downlo…

iOS调试真机出现的 “__llvm_profile_initialize“ 错误

一、错误形式&#xff1a; app启动就崩溃&#xff0c;如下&#xff1a; Demo__llvm_profile_initialize:0x1045f7ab0 <0>: stp x20, x19, [sp, #-0x20]!0x1045f7ab4 <4>: stp x29, x30, [sp, #0x10]0x1045f7ab8 <8>: add x29, sp, #0x100x1…

物联网平台是什么?

在数字化时代&#xff0c;物联网&#xff08;Internet of Things&#xff0c;简称IoT&#xff09;已经成为推动社会进步和产业升级的重要力量。物联网平台&#xff0c;作为连接物理世界与数字世界的桥梁&#xff0c;正逐渐成为智能设备、数据和服务的中心枢纽。本文将带你深入了…

Mochi 1视频生成模型亮相:动作流畅,开放源代码

前沿科技速递&#x1f680; 近日&#xff0c;AI公司Genmo发布了最新的开源视频生成模型Mochi 1。Mochi 1在动作质量和提示词遵循能力方面有显著提升&#xff0c;并且与市面上许多闭源商业模型相媲美。作为一款支持个人和商业用途的开源工具&#xff0c;Mochi 1不仅展示了开源技…

UEFI EDK2框架学习 (四)——UEFI图形化

一、修改protocol.c #include <Uefi.h> #include <Library/UefiLib.h> #include <Library/UefiBootServicesTableLib.h> #include <stdio.h>EFI_STATUS EFIAPI UefiMain(IN EFI_HANDLE ImageHandle,IN EFI_SYSTEM_TABLE *SystemTable ) {EFI_STATUS S…

软考中级网络工程师,快背,都是精华知识点!

一、上午常考概念 计算机硬件基础&#xff1a;根据考纲分析&#xff0c;本章主要考查三个模块&#xff1a;计算机体系结构、存储系统、I/O输入输出系统&#xff0c;其中每一模块又分若干知识点。“计算机硬件基础”相当于软考中的“公共基础课”&#xff0c;不同方向、不同级别…

初始JavaEE篇——多线程(2):join的用法、线程安全问题

找往期文章包括但不限于本期文章中不懂的知识点&#xff1a; 个人主页&#xff1a;我要学编程(ಥ_ಥ)-CSDN博客 所属专栏&#xff1a;JavaEE 目录 模拟实现线程中断 join的用法 线程的状态 NEW&#xff1a; RUNNABLE&#xff1a; TIMED_WAITING&#xff1a; TERMINATED…

系统架构图设计(轻量级架构)

轻量级架构一般包括&#xff1a;表现层、业务逻辑层、持久层、数据库层 表现层架构 MVC 模型&#xff08;Model&#xff09;&#xff1a;应用程序的主体部分&#xff0c;表示业务数据和业务逻辑视图&#xff08;View&#xff09;&#xff1a;用户看到并与之交流的界面控制器&…

Lim测试平台,五步完成批量生成数据

一、前言 在日常的测试工作中&#xff0c;我们常常需要生成大量的数据&#xff0c;例如为了测试分页功能、进行性能压力测试或准备测试所需的数据集。 虽然可以通过编写脚本或者使用如JMeter这样的工具来完成这些任务&#xff0c;但在团队合作的情境下&#xff0c;这种方法存…

打造通往自由的交易系统与策略——《以交易为生》读后感

我们知道要顺势而为&#xff0c;可什么是“势”&#xff1f;交易市场就像一片汪洋大海&#xff0c;潮起潮落的背后&#xff0c;有一套可以捕捉趋势的规律。要想看到势&#xff0c;就像软件工程中的可观测性&#xff0c;要找到合适的工具和指标&#xff0c;才能发现市场中重要的…

【云从】十、常见安全问题与云计算的计费模式

文章目录 1、常见安全问题1.1 DDoS攻击1.2 病毒攻击1.3 木马攻击1.4 代码自身漏洞 2、安全体系3、云计算的计费模式4、常见云产品的计费方案5、云产品计费案例 1、常见安全问题 1.1 DDoS攻击 通过分布在各地的大量终端&#xff0c;同时向目标发送恶意报包&#xff0c;以占满目…

微信小程序版本更新管理——实现自动更新

✅作者简介&#xff1a;2022年博客新星 第八。热爱国学的Java后端开发者&#xff0c;修心和技术同步精进。 &#x1f34e;个人主页&#xff1a;Java Fans的博客 &#x1f34a;个人信条&#xff1a;不迁怒&#xff0c;不贰过。小知识&#xff0c;大智慧。 &#x1f49e;当前专栏…

图表设计中文本的字体、大小与颜色

在创建图表时&#xff0c;我们往往过分关注图形的设计而忽视了文本的重要性。文本在图表中扮演着至关重要的角色&#xff0c;它不仅辅助图形具象化地展示数据&#xff0c;更是图表真实性和可靠性的关键。然而&#xff0c;很多人在设计图表时&#xff0c;并没有考虑到字体的选择…