Pyqt搭建YOLOV5⽬标检测界⾯
Pyqt搭建YOLOV5⽬标检测界⾯(超详细+源代码)
2021.11.19 更新
下⾯的代码⽚段⼤家可以参考着实现,如果直接拖拽到最新版的yolov5⽂件夹中运⾏可能会出错,应该我当时那个代码⽚段写的⽐较早,后续yolov5更新了,有些函数名有变动,所以直接运⾏会出错。我这⾥有当时和这个代码⽚段对应的yolov5的代码,但是不太知道这是哪个版本的yolov5。
所以有需要的朋友直接在:万能的⼩陈 后台回复 qtv5,获取整个⽂件夹以及模型,配置环境后可以直接运⾏,配置环境教程可以参考
注:压缩包名字为qt5_yolov5_1.0的对应原始版本,也就是下⾯代码⽚段可以直接⽤的,qt5_yolov5_2.0对应的是优化后的。这两个压缩包中的yolov5也不是同⼀个版本的,⼀个是2021年上半年的,⼀个是2021年下半年的
以下是正⽂
实现效果如下所⽰,可以检测图⽚、视频以及摄像头实时检测。
yolov5界⾯检测效果(pyqt5搭建)
测试平台:显卡1080ti。视频检测是优化后的版本,之前版本也可以视频检测,但是没这么流畅,优化后的版本在: 万能的⼩陈 后台回复 qtv5。
⽅法1:共两个⽂件,ui_yolov5.py 、detect_qt5.py,然后把yolov5的代码下载下来,直接把这两个⽂件拷贝到yolov5根⽬录,下载yolov5官⽅的yolov5s.pt权重,放置根⽬录,然后运⾏ui_yolov5.py 即可。
⽅法2:整个yolov5以及两个⽂件都已上传在github, 。⽆法访问github的关注:万能的⼩陈,回复qtv5即可获取下载链接。
(包含所有代码以及权重⽂件),只需要配置⼀下环境,配置环境可以,如果环境配置困难的或者失败的,在后台回复pyqt5即可获取完整环境。
⽂件1:ui_yolov5.py
#!/usr/bin/env python
# -*- coding:utf-8 -*-
# @author  : ChenAng
# @file    : ui_yolov5.py
# @Time    : 2021/8/27 10:13
import time
import os
from PyQt5 import QtWidgets, QtCore, QtGui
from PyQt5.QtGui import*
import cv2
import sys
from PyQt5.QtWidgets import*
from detect_qt5 import main_detect,my_lodelmodel
'''摄像头和视频实时检测界⾯'''
class Ui_MainWindow(QWidget):
def__init__(self, parent=None):
super(Ui_MainWindow, self).__init__(parent)
# self.face_recong = face.Recognition()
self.timer_camera1 = QtCore.QTimer()
self.timer_camera2 = QtCore.QTimer()
self.timer_camera3 = QtCore.QTimer()
self.timer_camera4 = QtCore.QTimer()
self.cap = cv2.VideoCapture()
self.CAM_NUM =0
# self.slot_init()
self.__flag_work =0
self.x =0
self.setWindowTitle("yolov5检测")
self.setWindowIcon(wd()+'\\data\\source_image\\Detective.ico')) # size(300, 150)  # 宽×⾼
window_pale = QtGui.QPalette()
window_pale.setBrush(self.backgroundRole(), QtGui.QBrush(
QtGui.wd()+'\\data\\source_image\\backgroud.jpg')))
self.setPalette(window_pale)
self.setFixedSize(1600,900)
text _model = my_lodelmodel()
self.button_open_camera = QPushButton(self)
self.button_open_camera.setText(u'打开摄像头')
self.button_open_camera.setStyleSheet('''
QPushButton
{text-align : center;
background-color : white;
font: bold;
border-color: gray;
border-width: 2px;
border-radius: 10px;
padding: 6px;
height : 14px;
border-style: outset;
font : 14px;}
QPushButton:pressed
{text-align : center;
background-color : light gray;
font: bold;
border-color: gray;
border-width: 2px;
border-radius: 10px;
padding: 6px;
height : 14px;
border-style: outset;
font : 14px;}
''')
self.button_ve(10,40)
self.button_open_t(self.button_open_camera_click) #self.button_open_t(self.button_open_camera_click1) # t(self.openimage)
self.btn1 = QPushButton(self)
self.btn1.setText("检测摄像头")
self.btn1.setStyleSheet('''
QPushButton
{text-align : center;
background-color : white;
font: bold;
border-color: gray;
border-width: 2px;
border-radius: 10px;
padding: 6px;
height : 14px;
border-style: outset;
font : 14px;}
QPushButton:pressed
{text-align : center;
background-color : light gray;
font: bold;
border-color: gray;
border-width: 2px;
border-radius: 10px;
padding: 6px;
height : 14px;
border-style: outset;
border-style: outset;
font : 14px;}
''')
ve(10,80)
self.t(self.button_open_camera_click1) # print("QPushButton构建")
self.open_video = QPushButton(self)
self.open_video.setText("打开视频")
self.open_video.setStyleSheet('''
QPushButton
{text-align : center;
background-color : white;
font: bold;
border-color: gray;
border-width: 2px;
border-radius: 10px;
padding: 6px;
height : 14px;
border-style: outset;
font : 14px;}
QPushButton:pressed
{text-align : center;
background-color : light gray;
font: bold;
border-color: gray;
border-width: 2px;
border-radius: 10px;
padding: 6px;
height : 14px;
border-style: outset;
font : 14px;}
''')
self.ve(10,160)
self.open_t(self.open_video_button) print("QPushButton构建")
self.btn1 = QPushButton(self)
self.btn1.setText("检测视频⽂件")
self.btn1.setStyleSheet('''
QPushButton
{text-align : center;
background-color : white;
font: bold;
border-color: gray;
border-width: 2px;
border-radius: 10px;
padding: 6px;
height : 14px;
border-style: outset;
font : 14px;}
QPushButton:pressed
{text-align : center;
background-color : light gray;
font: bold;
border-color: gray;
border-width: 2px;
border-radius: 10px;
padding: 6px;
height : 14px;
border-style: outset;
font : 14px;}
''')
ve(10,200)
self.t(self.detect_video)
print("QPushButton构建")
# t(self.detect())
# t(self.button1_test)
#t(self.detect())
# t(self.button1_test)
btn2 = QPushButton(self)
btn2.setText("返回上⼀界⾯")
btn2.setStyleSheet('''
QPushButton
{text-align : center;
background-color : white;
font: bold;
border-color: gray;
border-width: 2px;
border-radius: 10px;
padding: 6px;
height : 14px;
border-style: outset;
font : 14px;}
QPushButton:pressed
{text-align : center;
background-color : light gray;
font: bold;
border-color: gray;
border-width: 2px;
border-radius: 10px;
padding: 6px;
height : 14px;
border-style: outset;
font : 14px;}
''')
t(self.back_lastui)
# 信息显⽰
self.label_show_camera = QLabel(self)
self.label_move = QLabel()
self.label_move.setFixedSize(100,100)
# self.label_move.setText(" 11  待检测图⽚")
self.label_show_camera.setFixedSize(700,500)
self.label_show_camera.setAutoFillBackground(True)
self.label_ve(110,80)
self.label_show_camera.setStyleSheet("QLabel{background:#F5F5DC;}"
"QLabel{color:rgb(300,300,300,120);font-size:10px;font-weight:bold;font-family:宋体;}"
)
self.label_show_camera1 = QLabel(self)
self.label_show_camera1.setFixedSize(700,500)
self.label_show_camera1.setAutoFillBackground(True)
self.label_ve(850,80)
self.label_show_camera1.setStyleSheet("QLabel{background:#F5F5DC;}"
"QLabel{color:rgb(300,300,300,120);font-size:10px;font-weight:bold;font-family:宋体;}"
)
self.timer_t(self.show_camera)
self.timer_t(self.show_camera1)
# self.timer_t(self.show_camera2)
self.timer_t(self.show_camera2)
self.timer_t(self.show_camera3)
self.clicked =False
# self.setWindowTitle(u'摄像头')
self.frame_s=3
'''
# 设置背景图⽚
palette1 = QPalette()
palette1.setBrush(self.backgroundRole(), QBrush(QPixmap('background.jpg')))
self.setPalette(palette1)
'''

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。