计算机毕业设计:疲劳驾驶检测识别系统 python深度学习 YOLOv5 (包含文档+源码+部署教程)

[毕业设计]2023-2024年最新最全计算机专业毕设选题推荐汇总

1、项目介绍

基于YOLOv5的疲劳驾驶检测系统使用深度学习技术检测常见驾驶图片、视频和实时视频中的疲劳行为,识别其闭眼、打哈欠等结果并记录和保存,以防止交通事故发生。本文详细介绍疲劳驾驶检测系统实现原理的同时,给出Python的实现代码、训练数据集以及PyQt的UI界面。在界面中可以选择各种图片、视频进行检测识别,可对图像中存在的多个目标进行识别分类。

2、项目界面

(1)检测平台首页
在这里插入图片描述

(2)摄像头检测识别
在这里插入图片描述

(3)视频检测识别
在这里插入图片描述
(4)注册登录界面
在这里插入图片描述

3、项目说明

基于YOLOv5的疲劳驾驶检测系统应用深度学习技术检测常见驾驶过程中可能存在的疲劳驾驶行为,包括闭眼、打哈欠、正常等常见行为,以方便对驾驶员的安全驾驶进行监测分析;系统采用登录注册进行用户管理;对于图片、视频和摄像头捕获的实时画面,系统可检测画面中的疲劳驾驶行为;系统支持结果记录、展示和保存,每次检测的结果记录在表格中。对此这里给出博主设计的界面,同款的简约风,功能也可以满足图片、视频和摄像头的识别检测,

4、核心代码

# -*- coding: utf-8 -*-
"""
运行主程序:DrowsinessLoginUI.py  (包含登录界面)
"""
import os
import sys


import os.path
import threading
import time
from sys import argv, exit

from PyQt5.QtWidgets import QApplication

from DrowsinessDetecting import Drowsiness_MainWindow

from PyQt5 import QtWidgets
from PyQt5.QtCore import Qt
from PyQt5.QtGui import QPixmap, QFont, QIcon
from PyQt5.QtWidgets import QApplication, QMainWindow
from PyQt5.QtWidgets import QWidget, QLabel, QDesktopWidget, QHBoxLayout, QFormLayout, \
    QPushButton, QLineEdit, QMessageBox

from UI_rec.DrowsinessDetecting import Drowsiness_MainWindow





class LoginForm(QWidget):
    def __init__(self):
        super().__init__()
        self.text = "基于YOLOv5的疲劳驾驶检测系统"
        self.led_workerid = QLineEdit()
        self.led_pwd = QLineEdit()
        self.btn_login = QPushButton("登录")
        self.btn_reg = QPushButton("注册")
        self.initUI()
        self.btn_login.clicked.connect(self.do_login)
        self.btn_reg.clicked.connect(self.do_reg)
        self.pwd_name_ini = {"admin": "123456", "test": "123456"}
        self.sign_main = self.Drowsiness_Main()

    class Drowsiness_Main(Drowsiness_MainWindow):
        pass

    def do_reg(self):
        name_edit = self.led_workerid.text()
        pwd_edit = self.led_pwd.text()

        if name_edit != "" and pwd_edit != "":
            if name_edit not in self.pwd_name_ini.keys():
                self.pwd_name_ini.update({name_edit: pwd_edit})
                QMessageBox.about(self, "注册信息",
                                  "用户 " + name_edit + " 已注册成功!\n\n请重新进入登录界面")
            else:
                QMessageBox.about(self, "注册信息",
                                  "用户 " + name_edit + " 已经被注册过!\n\n请重新输入用户信息")
        else:
            QMessageBox.about(self, "注册信息",
                              "您的信息填写不全!\n请重新输入用户名和密码")

    def do_login(self):
        name_edit = self.led_workerid.text()
        pwd_edit = self.led_pwd.text()

        if name_edit != "" and pwd_edit != "":
            if name_edit in self.pwd_name_ini.keys():
                ini_pwd = self.pwd_name_ini[name_edit]
                if pwd_edit == ini_pwd:
                    # QMessageBox.about(self, "登录信息",
                    #                   "用户 " + name_edit + " 已成功登录!\n\n点击确定启动界面程序")
                    # self.close()
                    # QtWidgets.QApplication.processEvents()
                    # os.system("python runMain.py")
                    self.hide()
                    # win = Bird_MainWindow()
                    self.sign_main.show()
                else:
                    QMessageBox.about(self, "登录信息",
                                      "用户 " + name_edit + " 密码不正确!\n\n请重新输入密码")
            else:
                QMessageBox.about(self, "登录信息",
                                  "用户 " + name_edit + " 未经过注册!\n\n请重新输入用户信息")
        else:
            QMessageBox.about(self, "登录信息",
                              "您的信息填写不全!\n请重新输入用户名和密码")

    def initUI(self):
        """
        初始化UI
        :return:
        """
        self.setObjectName("loginWindow")
        self.setStyleSheet('#loginWindow{background-color:white}')
        self.setFixedSize(650, 400)
        self.setWindowTitle("登录-")
        self.setWindowIcon(QIcon('icons/sign.png'))

        # 添加顶部logo图片
        pixmap = QPixmap("icons/back.png")
        scaredPixmap = pixmap.scaled(650, 180)
        label = QLabel(self)
        label.setPixmap(scaredPixmap)

        # 绘制顶部文字
        lbl_logo = QLabel(self)
        lbl_logo.setText(self.text)
        lbl_logo.setStyleSheet("QWidget{color:white;font-weight:600;background: transparent;font-size:30px;}")
        lbl_logo.setFont(QFont("Microsoft YaHei"))
        lbl_logo.move(100, 70)
        lbl_logo.setAlignment(Qt.AlignCenter)
        lbl_logo.raise_()

        # 登录表单内容部分
        login_widget = QWidget(self)
        login_widget.move(0, 160)
        login_widget.setGeometry(0, 160, 650, 260)

        hbox = QHBoxLayout()
        # 添加左侧logo
        logolb = QLabel(self)
        logopix = QPixmap("icons/sign.png")
        logopix_scared = logopix.scaled(130, 130)
        logolb.setPixmap(logopix_scared)
        logolb.setAlignment(Qt.AlignCenter)
        hbox.addWidget(logolb, 1)
        # 添加右侧表单
        fmlayout = QFormLayout()
        lbl_workerid = QLabel("用户名:")
        lbl_workerid.setFont(QFont("Microsoft YaHei"))
        lbl_workerid.setStyleSheet("color:blue")
        self.led_workerid.setFixedWidth(270)
        self.led_workerid.setFixedHeight(38)
        self.led_workerid.setFont(QFont("Microsoft YaHei"))
        self.led_workerid.setPlaceholderText("用户名/账号")

        lbl_pwd = QLabel("密   码:")
        lbl_pwd.setFont(QFont("Microsoft YaHei"))
        lbl_pwd.setStyleSheet("color:blue")
        self.led_pwd.setEchoMode(QLineEdit.Password)
        self.led_pwd.setFixedWidth(270)
        self.led_pwd.setFixedHeight(38)
        self.led_pwd.setFont(QFont("Microsoft YaHei"))
        self.led_pwd.setPlaceholderText("密码")

        self.btn_reg.setFixedWidth(130)
        self.btn_reg.setFixedHeight(40)
        self.btn_reg.setFont(QFont("Microsoft YaHei"))
        self.btn_reg.setObjectName("reg_btn")
        # btn_reg.setStyleSheet("#reg_btn{background-color:#2c7adf;color:#fff;border:5px;border-radius:4px;}")

        self.btn_login.setFixedWidth(130)
        self.btn_login.setFixedHeight(40)
        self.btn_login.setFont(QFont("Microsoft YaHei"))
        self.btn_login.setObjectName("login_btn")

        fmlayout.addRow(lbl_workerid, self.led_workerid)
        fmlayout.addRow(lbl_pwd, self.led_pwd)
        # fmlayout.addWidget(btn_login)

        flyout2 = QHBoxLayout()
        flyout2.addWidget(self.btn_reg)
        flyout2.addWidget(self.btn_login)

        fmlayout.addItem(flyout2)
        # flyout2.setHorizontalSpacing(20)
        flyout2.setSpacing(12)
        hbox.setAlignment(Qt.AlignCenter)
        # 调整间距
        fmlayout.setHorizontalSpacing(20)
        fmlayout.setVerticalSpacing(12)

        hbox.addLayout(fmlayout, 2)
        login_widget.setLayout(hbox)
        


if __name__ == "__main__":




    app = QApplication(sys.argv)
    ex = LoginForm()
    ex.show()

    sys.exit(app.exec_())


源码获取:

🍅由于篇幅限制,获取完整文章或源码、代做项目的,查看主页【专栏名称】或者【用户名】或者顶部的【选题链接】就可以找到我获取项目源码学习啦~🍅

大家点赞、收藏、关注、评论啦 !

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

ROC 曲线详解

前言 ROC 曲线是一种坐标图式的分析工具,是由二战中的电子和雷达工程师发明的,发明之初是用来侦测敌军飞机、船舰,后来被应用于医学、生物学、犯罪心理学。 如今,ROC 曲线已经被广泛应用于机器学习领域的模型评估,说…

模板初阶 C++

目录 泛型编程 函数模板 概念 格式 原理 函数模板的实例化 类模板 格式 类模板的实例化 泛型编程 当我们要实现一个交换函数,我们可以利用函数重载实现,但是有几个不好的地方 1.函数重载仅仅是类型不同,代码复用率较低,只…

pyorch Hub 系列#4:PGAN — GAN 模型

一、主题描述 2014 年生成对抗网络的诞生及其对任意数据分布进行有效建模的能力席卷了计算机视觉界。两人范例的简单性和推理时令人惊讶的快速样本生成是使 GAN 成为现实世界中实际应用的理想选择的两个主要因素。 然而,在它们出现后的很长一段时间内,GA…

知识蒸馏概述及开源项目推荐

文章目录 1.介绍2.知识2.1 基于响应的知识(response-based)2.2 基于特征的知识(feature-based)2.3 基于关系的知识(relation-based) 3.蒸馏机制3.1 离线蒸馏3.2 在线蒸馏3.3 自蒸馏 4.教师-学生架构5.蒸馏算法5.1 对抗性蒸馏(Adversarial Dis…

Linux基础开发工具之调试器gdb

文章目录 1.编译成的可调试的debug版本1.1gcc test.c -o testdebug -g1.2readelf -S testdebug | grep -i debug 2.调试指令2.0quit退出2.1list/l/l 数字: 显示代码2.2run/r运行2.3断点相关1. break num/b num: 设置2. info b: 查看3. d index: 删除4. n: F10逐过程5. p 变量名…

Python文件、文件夹操作汇总

目录 一、概览 二、文件操作 2.1 文件的打开、关闭 2.2 文件级操作 2.3 文件内容的操作 三、文件夹操作 四、常用技巧 五、常见使用场景 5.1 查找指定类型文件 5.2 查找指定名称的文件 5.3 查找指定名称的文件夹 5.4 指定路径查找包含指定内容的文件 一、概览 ​在…

CSS注入的四种实现方式

目录 CSS注入窃取标签属性数据 简单的一个实验: 解决hidden 方法1:jsnode.js实现 侧信道攻击 方法2:对比波兰研究院的方案 使用兄弟选择器 方法3:jswebsocket实现CSS注入 实验实现: 方法4:window…

【云备份|| 日志 day6】文件业务处理模块

云备份day6 业务处理 业务处理 云备份项目中 ,业务处理模块是针对客户端的业务请求进行处理,并最终给与响应。而整个过程中包含以下要实现的功能: 借助网络通信模块httplib库搭建http服务器与客户端进行网络通信针对收到的请求进行对应的业…

算法导论笔记4:散列数 hash

一 了解一些散列的基本概念,仅从文字角度,整理了最基础的定义。 发现一本书,《算法图解》,微信读书APP可读,有图,并且是科普性质的读物,用的比喻很生活化,可以与《算法导论》合并起…

Xshell远程登录 Linux小键盘数字输入变成字母解决办法

Xshell的设置问题,依次查看:文件-->属性-->终端-->VT模式-->初始数字键盘模式更改为:设置普通(s)

vue-常用指令

​🌈个人主页:前端青山 🔥系列专栏:Vue篇 🔖人终将被年少不可得之物困其一生 依旧青山,本期给大家带来vue篇专栏内容-常用指令 目录 常用指令 1、v-cloak 2、数据绑定指令 3、v-once 4、v-bind(重点&a…

在线制作仿真病历证明软件,易语言实现病例报告生成器,取画板快照+标签+编辑框

闲着无聊用易语言开发了一个病例生成器,当然我加了水印的,这个图片你就算截图你也用不了,模板是从百度图库搜的,很多,我就随便找了一个,然后实现逻辑就是加了一个画板,然后载入了素材图&#xf…

2023-11-12 LeetCode每日一题(Range 模块)

2023-03-29每日一题 一、题目编号 715. Range 模块二、题目链接 点击跳转到题目位置 三、题目描述 Range模块是跟踪数字范围的模块。设计一个数据结构来跟踪表示为 半开区间 的范围并查询它们。 半开区间 [left, right) 表示所有 left < x < right 的实数 x 。 实…

采用示波器显示扭矩传感器模拟信号

扭矩传感器输出的信号波形通常是模拟电压信号&#xff0c;可以通过示波器等仪器进行分析。扭矩传感器的输出信号波形通常有两种类型&#xff1a;正弦波和方波。 应变片传感器扭矩测量采用应变电测技术。在弹性轴上粘贴应变计组成测量电桥&#xff0c;当弹性轴受扭矩产生微小变…

【CASS精品教程】cass3d 11.0加载超大影像、三维模型、点云数据

CAD2016+CASS11.0(内置3d)下载与安装: 【CASS精品教程】CAD2016+CASS11.0安装教程(附CASS11.0安装包下载)https://geostorm.blog.csdn.net/article/details/132392530 一、cass11.0 3d支持的数据 cass11.0中的3d模块增加了多种数据的支持,主要有: 1. 三维模型 点击…

Linux学习教程(第二章 Linux系统安装)3

第二章 Linux系统安装 十一、Linux远程管理协议&#xff08;RFB、RDP、Telnet和SSH&#xff09; 提到远程管理&#xff0c;通常指的是远程管理服务器&#xff0c;而非个人计算机。个人计算机可以随时拿来用&#xff0c;服务器通常放置在机房中&#xff0c;用户无法直接接触到…

画面精美传奇手游幽冥传奇【幽冥灭龙传奇】win服务端+双端+GM授权后台+详细教程

搭建资源下载地址&#xff1a;画面精美传奇手游幽冥传奇幽冥灭龙传奇win服务端双端GM授权后台详细教程-海盗空间

Xilinx FPGA平台DDR3设计详解(一):DDR SDRAM系统框架

DDR SDRAM&#xff08;双倍速率同步动态随机存储器&#xff09;是一种内存技术&#xff0c;它可以在时钟信号的上升沿和下降沿都传输数据&#xff0c;从而提高数据传输的速率。DDR SDRAM已经发展了多代&#xff0c;包括DDR、DDR2、DDR3、DDR4和DDR5&#xff0c;每一代都有不同的…

GoF之工厂模式

Spring GoF之工厂模式工厂模式的三种形态简单工厂模式简单工厂模式优缺点 工厂方法模式工厂方法模式的优缺点 GoF之工厂模式 ● 设计模式&#xff1a;一种可以被重复利用的解决方案。 GoF有23种设计模式&#xff0c;还有其它的设计模式&#xff0c;比如&#xff1a;JavaEE的设…

使用 huggingface_hub 镜像下载 大模型

download.py &#x1f447; import os # 配置 hf镜像 os.environ[HF_ENDPOINT] https://hf-mirror.com# 设置保存的路径 local_dir "XXXXXX"# 设置仓库id model_id "sensenova/piccolo-large-zh"cmd f"huggingface-cli download --resume-downlo…