【基于PyQt5的YOLOv5可视化界面系统】可检测图片、视频、摄像头,有保存功能

➷点击跳转至文末所有涉及的完整代码文件下载页☇

演示视频

【基于PyQt的YOLOv5可视化界面系统】可检测图片、视频、摄像头,支持GPU加速检测

系统界面

YOLOv5可视化界面

项目环境

项目运行所需环境为YOLOv5的环境+PyQt5的环境即可。

系统界面功能

①系统支持图片检测,视频检测、摄像头检测
②显示图像的检测时间与实时显示视频与摄像头单帧的检测时间
③可保存检测图像与视频,支持调节置信度和交并比
④支持GPU和CPU两种模型加载模型,模型版本为v7.0

项目框架介绍

新增文件文件说明
A_identify.py写了Identify目标检测类,该类用于初始化模型相关参数并且加载模型、其中写了一个类函数用于目标检测,功能为输入图像或者视频流图像返回检测图像与标签列表
A_main.py写了MainUi界面类,该类用于PyQt5编写可视化界面,以及写了相关功能函数实现响应
A_pt文件夹该文件夹用于放系统所读取的检测pt模型,如果需要更换检测模型,则将模型换进此文件夹即可
A_output文件夹该文件夹用于存放检测保存的检测图像、检测视频和摄像头实时检测视频

如下图为整个项目目录,除上方表格所述文件,其余文件为YOLOv5-v7.0的源项目文件。
在这里插入图片描述

项目代码获取


参考视频演示:https://www.bilibili.com/video/BV1q64y1N7BZ/

完整代码下载:https://gf.bilibili.com/item/detail/1104509048?noTitleBar=1&from=mall-up_itemDetail&msource=comments_453943733

博主技术过硬,本科计算机类竞赛证书40余项,掌握C+/Python/Java/Web网站/OpenCV图像处理/YOLOv5目标检测
博主可指导各类YOLOv5目标检测项目以及其他计算机项目开发,毕设指导、代码讲解、环境配置,大作业等。
---->  QQ:2208353492  ----
  • 16
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
PyQt5 是一个基于 Python 的 GUI 编程库,可以用来创建各种各样的桌面应用程序。YOLOv8 则是一种目标检测算法的实现,可以用于检测图像或视频中的物体。 要编写 YOLOv8 的可视化界面,你需要掌握以下技能: 1. PyQt5 的基本使用:包括窗口、布局、控件等的创建和使用。 2. YOLOv8 的基本使用:包括数据集的准备、模型的训练和测试等。 3. 图像处理的基本知识:包括图像的读取、显示、缩放等操作。 下面是一个简单的示例,演示如何使用 PyQt5 创建一个简单的 YOLOv8 可视化界面: ```python import sys import cv2 import numpy as np from PyQt5.QtCore import Qt, QTimer from PyQt5.QtGui import QImage, QPixmap from PyQt5.QtWidgets import QApplication, QDialog, QLabel, QVBoxLayout, QHBoxLayout, QPushButton, QFileDialog from yolo import YOLOv8 class App(QDialog): def __init__(self): super().__init__() # 创建 YOLOv8 模型 self.yolo = YOLOv8() # 创建 UI 控件 self.image_label = QLabel(self) self.image_label.setAlignment(Qt.AlignCenter) self.image_label.setMinimumSize(640, 480) self.start_button = QPushButton('Start', self) self.start_button.clicked.connect(self.start) self.stop_button = QPushButton('Stop', self) self.stop_button.clicked.connect(self.stop) self.stop_button.setEnabled(False) self.open_button = QPushButton('Open', self) self.open_button.clicked.connect(self.open) # 创建布局 buttons_layout = QHBoxLayout() buttons_layout.addWidget(self.start_button) buttons_layout.addWidget(self.stop_button) buttons_layout.addWidget(self.open_button) main_layout = QVBoxLayout() main_layout.addWidget(self.image_label) main_layout.addLayout(buttons_layout) self.setLayout(main_layout) # 创建计时器 self.timer = QTimer(self) self.timer.timeout.connect(self.update_frame) # 初始化状态 self.cap = None self.started = False def start(self): # 打开摄像头 self.cap = cv2.VideoCapture(0) # 启动计时器 self.timer.start(33) # 更新 UI 控件 self.start_button.setEnabled(False) self.stop_button.setEnabled(True) self.open_button.setEnabled(False) self.started = True def stop(self): # 停止计时器 self.timer.stop() # 关闭摄像头 self.cap.release() # 更新 UI 控件 self.start_button.setEnabled(True) self.stop_button.setEnabled(False) self.open_button.setEnabled(True) self.started = False def open(self): # 打开文件对话框 file_name, _ = QFileDialog.getOpenFileName(self, 'Open File', '', 'Images (*.png *.xpm *.jpg *.bmp);;All Files (*.*)') if file_name: # 加载图像 self.cap = cv2.VideoCapture(file_name) # 启动计时器 self.timer.start(33) # 更新 UI 控件 self.start_button.setEnabled(False) self.stop_button.setEnabled(True) self.open_button.setEnabled(False) self.started = True def update_frame(self): # 读取图像 ret, frame = self.cap.read() if ret: # 将图像转为 RGB 格式 frame = cv2.cvtColor(frame, cv2.COLOR_BGR2RGB) # 缩放图像 frame = cv2.resize(frame, (640, 480)) # 检测目标 result = self.yolo.detect(frame) # 绘制边框和标签 for label, x1, y1, x2, y2 in result: cv2.rectangle(frame, (x1, y1), (x2, y2), (0, 255, 0), 2) cv2.putText(frame, label, (x1, y1 - 10), cv2.FONT_HERSHEY_SIMPLEX, 0.9, (0, 255, 0), 2) # 将图像转为 QImage 格式 image = QImage(frame, frame.shape[1], frame.shape[0], QImage.Format_RGB888) # 在 UI 控件中显示图像 self.image_label.setPixmap(QPixmap.fromImage(image)) else: # 如果读取到了最后一帧,停止计时器 self.timer.stop() # 关闭摄像头 self.cap.release() # 更新 UI 控件 self.start_button.setEnabled(True) self.stop_button.setEnabled(False) self.open_button.setEnabled(True) self.started = False if __name__ == '__main__': # 创建应用程序 app = QApplication(sys.argv) # 创建主窗口 window = App() window.setWindowTitle('YOLOv8 GUI') # 显示窗口 window.show() # 运行应用程序 sys.exit(app.exec_()) ``` 这个示例中,我们使用 PyQt5 创建了一个包含三个按钮和一个标签的窗口。当用户单击 “Open” 按钮时,会打开一个文件对话框,用户可以选择要加载的图像文件。单击 “Start” 按钮后,程序会打开摄像头,并在标签中显示摄像头捕获的图像。单击 “Stop” 按钮则会停止显示图像。在显示图像时,程序还会使用 YOLOv8 模型检测图像中的目标,并在图像上绘制边框和标签。 这只是一个简单的示例,你可以根据自己的需求进行修和扩展。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值