0
点赞
收藏
分享

微信扫一扫

【手把手期末项目】基于YOLOv5+PyQt5开发的可视化人数检测系统

一、环境

系统:Windows 10 64位
显卡:RTX3060 + cuda11.3 + cudnn8200
语言:Anaconda3(conda 4.12.0) + Python 3.8.13
框架:yolov5 5.0 + pytorch1.11.0
桌面GUI:PyQt5
部分环境配置1
部分环境配置2

二、前言

粉丝们呼声很高,说要我出一些新颖的内容,满足各位的好奇心。这几天抽空鼓捣下深度学习的内容,完成了一个基于YOLOV5算法实现的人数检测模型,并给他套了个PyQt5的壳子,瞬间高级了。废话不说,直接上效果。
效果图1
效果图2
【应相关方面强烈要求,此处保护出镜人员肖像权】

三、环境安装及模型训练

  • 请参考博主【炮哥带你学】系列文章目标检测–手把手教你搭建自己的YOLOv5目标检测平台,从安装环境到模型训练一条龙教学,在此不赘述。
  • 另,本项目训练数据集:
    链接:https://pan.baidu.com/s/1xBph3IBXKnArVtMSckLeMA
    提取码:1111

四、PyQt页面

使用QtDesigner画页面,生成一个.ui的文件。然后,通过PyQt5提供的转换工具,将.ui文件转换成Python的代码,如下:

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

# Form implementation generated from reading ui file 'MainWindow.ui'
#
# Created by: PyQt5 UI code generator 5.15.6
#
# WARNING: Any manual changes made to this file will be lost when pyuic5 is
# run again.  Do not edit this file unless you know what you are doing.


from PyQt5 import QtCore, QtGui, QtWidgets


class Ui_Widget(object):
    def setupUi(self, Widget):
        Widget.setObjectName("Widget")
        Widget.resize(630, 700)
        Widget.setMinimumSize(QtCore.QSize(630, 700))
        Widget.setMaximumSize(QtCore.QSize(630, 700))
        self.groupBox = QtWidgets.QGroupBox(Widget)
        self.groupBox.setGeometry(QtCore.QRect(30, 60, 571, 481))
        self.groupBox.setObjectName("groupBox")
        self.label = QtWidgets.QLabel(self.groupBox)
        self.label.setGeometry(QtCore.QRect(10, 20, 551, 451))
        self.label.setObjectName("label")
        self.groupBox_2 = QtWidgets.QGroupBox(Widget)
        self.groupBox_2.setGeometry(QtCore.QRect(30, 550, 451, 131))
        self.groupBox_2.setObjectName("groupBox_2")
        self.textEdit = QtWidgets.QTextEdit(self.groupBox_2)
        self.textEdit.setGeometry(QtCore.QRect(10, 20, 431, 101))
        self.textEdit.setObjectName("textEdit")
        self.groupBox_3 = QtWidgets.QGroupBox(Widget)
        self.groupBox_3.setGeometry(QtCore.QRect(490, 550, 111, 61))
        self.groupBox_3.setObjectName("groupBox_3")
        self.lcdNumber = QtWidgets.QLCDNumber(self.groupBox_3)
        self.lcdNumber.setGeometry(QtCore.QRect(10, 20, 91, 31))
        self.lcdNumber.setObjectName("lcdNumber")
        self.groupBox_4 = QtWidgets.QGroupBox(Widget)
        self.groupBox_4.setGeometry(QtCore.QRect(490, 620, 111, 61))
        self.groupBox_4.setObjectName("groupBox_4")
        self.lcdNumber_2 = QtWidgets.QLCDNumber(self.groupBox_4)
        self.lcdNumber_2.setGeometry(QtCore.QRect(10, 20, 91, 31))
        self.lcdNumber_2.setObjectName("lcdNumber_2")
        self.layoutWidget = QtWidgets.QWidget(Widget)
        self.layoutWidget.setGeometry(QtCore.QRect(29, 20, 571, 25))
        self.layoutWidget.setObjectName("layoutWidget")
        self.horizontalLayout = QtWidgets.QHBoxLayout(self.layoutWidget)
        self.horizontalLayout.setContentsMargins(0, 0, 0, 0)
        self.horizontalLayout.setObjectName("horizontalLayout")
        self.pushButton = QtWidgets.QPushButton(self.layoutWidget)
        self.pushButton.setObjectName("pushButton")
        self.horizontalLayout.addWidget(self.pushButton)
        self.pushButton_2 = QtWidgets.QPushButton(self.layoutWidget)
        self.pushButton_2.setEnabled(False)
        self.pushButton_2.setObjectName("pushButton_2")
        self.horizontalLayout.addWidget(self.pushButton_2)
        self.pushButton_3 = QtWidgets.QPushButton(self.layoutWidget)
        self.pushButton_3.setEnabled(False)
        self.pushButton_3.setObjectName("pushButton_3")
        self.horizontalLayout.addWidget(self.pushButton_3)

        self.retranslateUi(Widget)
        QtCore.QMetaObject.connectSlotsByName(Widget)

    def retranslateUi(self, Widget):
        _translate = QtCore.QCoreApplication.translate
        Widget.setWindowTitle(_translate("Widget", "人数检测可视化界面"))
        self.groupBox.setTitle(_translate("Widget", "实时视频"))
        self.label.setText(_translate("Widget", "视频将显示在这里"))
        self.groupBox_2.setTitle(_translate("Widget", "控制台信息"))
        self.groupBox_3.setTitle(_translate("Widget", "当前人数"))
        self.groupBox_4.setTitle(_translate("Widget", "本日最大人数"))
        self.pushButton.setText(_translate("Widget", "连接摄像头"))
        self.pushButton_2.setText(_translate("Widget", "开启实时视频"))
        self.pushButton_3.setText(_translate("Widget", "关闭实时视频"))

五、整合代码

这一部分暂时不能发出来,敬请期待

六、完整代码链接

这一部分暂时不能发出来,敬请期待

举报

相关推荐

0 条评论