交通信号标志识别系统 python 深度学习 YOLOv5

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

感兴趣的可以先收藏起来,还有大家在毕设选题,项目以及论文编写等相关问题都可以给我留言咨询,希望帮助更多的人 。

1、项目介绍

本系统基于YOLOv5,采用登录注册进行用户管理,对于图片、视频和摄像头捕获的实时画面,可检测交通信号标志图像,系统支持结果记录、展示和保存,每次检测的结果记录在表格中。对此这里给出博主设计的界面,功能也可以满足图片、视频和摄像头的识别检测。

2、项目界面

(1)系统首页
交通信号标志识别系统 python 深度学习 YOLOv5_第1张图片

(2)图片检测1
交通信号标志识别系统 python 深度学习 YOLOv5_第2张图片

(2)图片检测2

交通信号标志识别系统 python 深度学习 YOLOv5_第3张图片

(3)图片检测3

交通信号标志识别系统 python 深度学习 YOLOv5_第4张图片

(4)视频检测

交通信号标志识别系统 python 深度学习 YOLOv5_第5张图片

(5)摄像头检测识别

交通信号标志识别系统 python 深度学习 YOLOv5_第6张图片

(6)注册登录界面
交通信号标志识别系统 python 深度学习 YOLOv5_第7张图片

3、项目说明

交通标志识别系统是ITS和无人驾驶系统的重要组成部分。如何提高交通标志检测与识别技术的准确性和实时性,是该技术走向实际应用时需要解决的关键问题。
近年来,大多数先进的目标检测算法,如Faster R-CNN、R-FCN、SSD和YOLO,都使用了卷积神经网络,并在目标检测任务中取得了丰硕的成果。然而,将这些方法简单地应用到交通标志识别中很难取得满意的效果。车载移动终端的目标识别和检测对不同尺度的目标要求较高的精度,对识别速度要求较高,这意味着要满足准确性和实时性两个要求。传统的CNN通常需要大量的参数和浮点运算(FLOPs)来达到令人满意的精度,例如ResNet-50有大约25.6万个参数,需要41亿个浮点运算来处理224×224大小的图像。然而,内存和计算资源有限的移动设备(如智能手机和自动驾驶汽车)无法用于更大网络的部署和推理。YOLOv5作为一种One-stage检测器,具有计算量小、识别速度快等优点。

4、核心代码

# -*- coding: utf-8 -*-

import os
import sys

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.TrafficSignRecing import Traffic_MainWindow


import os.path
import threading
import time

from sys import argv, exit




class LoginForm(QWidget):
    def __init__(self):
        super().__init__()
        self.text = ""
        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.Traffic_Main()

    class Traffic_Main(Traffic_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/result.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(130, 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_())

源码获取:

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

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

你可能感兴趣的:(毕业设计,biyesheji0001,biyesheji0002,python,深度学习,YOLO,图像处理,语音识别)