使用pyqt对yolov5进行简答部署

YOLOv5是一种高效的实时目标检测算法,广泛应用于各类计算机视觉任务中。为了实现便捷的图形用户界面(GUI),我们采用了PyQt框架。PyQt是一个Python绑定的Qt库,用于创建跨平台的应用程序。

在本研究中,我们首先对YOLOv5模型进行了训练和优化,以适应特定的目标检测需求。接着,设计并实现了一个基于PyQt的图形用户界面,用户可以通过该界面加载图像或视频,并实时查看目标检测结果。我们详细阐述了如何将YOLOv5模型集成到PyQt应用程序中的具体步骤,包括模型加载、图像预处理、目标检测以及结果展示等关键环节。

github:https://github.com/Hjananggch/pyqt_yolo

import sys
import cv2
import torch
from PyQt5.QtWidgets import (QApplication, QWidget, QPushButton, QVBoxLayout,QFileDialog, QLabel, QHBoxLayout)
from PyQt5.QtCore import QTimer, Qt
from PyQt5.QtGui import QImage, QPixmap, QFont#加载模型
model = torch.hub.load(r'C:\Users\AN\Desktop\pyqt_yolo\model', 'custom',path=r"C:\Users\AN\Desktop\pyqt_yolo\weights\best.pt", source='local')
model.conf = 0.5
model.iou = 0.45class VideoPlayer(QWidget):def __init__(self):super().__init__()self.initUI()def initUI(self):self.setWindowTitle('YOLOv5 Video Player')self.setGeometry(100, 100, 1000, 700)self.layout = QVBoxLayout()title = QLabel('YOLOv5 Object Detection Video Player')title.setFont(QFont('Arial', 20))title.setAlignment(Qt.AlignCenter)self.layout.addWidget(title)self.videoLabel = QLabel()self.videoLabel.setAlignment(Qt.AlignCenter)self.layout.addWidget(self.videoLabel)buttonLayout = QHBoxLayout()self.openButton = QPushButton('Open Video')self.openButton.setFont(QFont('Arial', 14))self.openButton.clicked.connect(self.openVideoFile)buttonLayout.addWidget(self.openButton)self.quitButton = QPushButton('Quit')self.quitButton.setFont(QFont('Arial', 14))self.quitButton.clicked.connect(self.close)buttonLayout.addWidget(self.quitButton)self.layout.addLayout(buttonLayout)self.setLayout(self.layout)self.timer = QTimer()self.timer.timeout.connect(self.nextFrameSlot)self.cap = Nonedef openVideoFile(self):videoPath, _ = QFileDialog.getOpenFileName(self, "Open Video File", "", "Video Files (*.mp4 *.avi *.mkv)")if videoPath != '':self.cap = cv2.VideoCapture(videoPath)self.timer.start(30)def nextFrameSlot(self):ret, frame = self.cap.read()if ret:results = model(frame)frame = self.box(frame, results)frame = cv2.cvtColor(frame, cv2.COLOR_BGR2RGB)image = QImage(frame, frame.shape[1], frame.shape[0], frame.strides[0], QImage.Format_RGB888)self.videoLabel.setPixmap(QPixmap.fromImage(image))else:self.timer.stop()self.cap.release()def box(self, frame, results):results = results.pandas().xyxy[0].to_numpy()color = (251, 238, 1)for box in results:cls = box[6]l, t, r, b = box[:4].astype('int')cv2.rectangle(frame, (l, t), (r, b), color, 2)cv2.putText(frame, str(cls), (l, t), cv2.FONT_HERSHEY_SIMPLEX, 1, color, 1)return frameif __name__ == '__main__':app = QApplication(sys.argv)player = VideoPlayer()player.show()sys.exit(app.exec_())

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

「React」RSC 服务端组件

前言 RSC(React Server Components)是React框架的一个新特性,它允许开发者编写只在服务器端渲染的组件。与传统的服务器端渲染(SSR)不同,RSC的目标是提升性能和用户体验,同时减少客户端加载的J…

【每日一练】day3

✨✨谢谢大家捧场,祝屏幕前的小伙伴们每天都有好运相伴左右,一定要天天开心哦!✨✨ 🎈🎈作者主页: 🎈丠丠64-CSDN博客🎈 ✨✨ 帅哥美女们,我们共同加油!一起…

OLED柔性屏的显示效果如何

OLED柔性屏的显示效果非常出色,具有多方面的优势。以下是关于OLED柔性屏显示效果的详细分析: 色彩表现:OLED柔性屏的每个像素都可以独立发光,因此色彩准确性极高。黑色呈现得非常深邃,而亮部则展现出鲜明而生动的细节。…

vue3+electron搭建桌面软件

vue3electron开发桌面软件 最近有个小项目, 客户希望像打开 网易云音乐 那么简单的运行起来系统. 前端用 Vue 会比较快一些, 因此决定使用 electron 结合 Vue3 的方式来完成该项目. 然而, 在实施过程中发现没有完整的博客能够记录从创建到打包的流程, 摸索一番之后, 随即梳理…

事件、方法实现 on_radioGreen_clicked ,on_chkBoxUnder_clicked,Qfont,QPalette

Vertical Layout 、Horizontal Layout 实验窗体自适应布局 接上篇界面布局, 实验checkBox、radioBox 的事件槽, 使用Qfont组件变更纯文本框QPlainTextEdit中字体的下划线、加粗、斜体效果 使用调色板组QPalette变更纯文本框QPlainTextEdit中文本颜色 UI…

VsCode中C文件调用其他C文件函数失败

之前一直使用CodeBlocks,最近使用vscode多,感觉它比较方便,但在调用其他C文件的时候发现报错以下内容基于单C文件运行成功,否则请移步 博文:VSCode上搭建C/C开发环境 报错信息 没有使用CodeRunner插件,弹…

❤追本溯源篇-林太白

❤追本溯源篇-林太白 总结当前博客下所有的技术和相关文章 (点赞收藏不断更新) 工具使用 ❤ Chrome浏览器使用 设置Chrome浏览器 http://t.csdnimg.cn/P68jK

DDei在线设计器-配置主题风格

DDeiCore-主题 DDei-Core插件提供了默认主题和黑色主题。 如需了解详细的API教程以及参数说明,请参考DDei文档 默认主题 黑色主题 使用指南 引入 import { DDeiCoreThemeBlack } from "ddei-editor";使用并修改设置 extensions: [......//通过配置&am…

Java对指定不规则的jsonString读取并操作

当我们在做项目的时候有时候会对接第三方的接口,假如对方返回的结果是一个不规则的json字符串,这个时候我们就需要对于返回结果一条一条的进行读取并操作: 一、json例子:不是数组,单纯的只是一行一行的数据 {"n…

Web前端右侧悬浮:实现技巧与深度解析

Web前端右侧悬浮:实现技巧与深度解析 在Web前端开发中,右侧悬浮功能作为一种常见的交互设计元素,能够为用户提供便捷的操作入口,提升用户体验。然而,实现这一功能却并非易事,需要开发者掌握一定的技巧和方…

机器学习在医学领域中的应用|文献精析·24-06-13

小罗碎碎念 2024-06-13|文献精析:机器学习在医学领域中的应用 为了系统性地和大家梳理一下机器学习在医学领域中的应用,我特意去找了一篇文献,把其中有价值的信息筛选出来了。但是我没选的内容不代表不重要,感兴趣的可…

一文讲清:bom管理系统是什么?在生产管理中有什么作用?

在制造业中,物料清单(Bill of Materials,简称BOM)扮演着至关重要的角色。物料清单(BOM)是制造或维修产品所需的材料、组件和零件的结构化综合列表,以及所需材料的数量、名称、描述和成本。简而言…

解释 RESTful API, 如何使用它构建 web 应用程序

RESTful API(Representational State Transfer)是一种设计风格和架构原则,用于构建可扩展和可维护的网络应用程序。它基于 HTTP 协议,并使用标准的 HTTP 方法(GET、POST、PUT、DELETE)来执行对资源的操作。…

Web前端项目实例描述:构建交互式在线书店

Web前端项目实例描述:构建交互式在线书店 在数字化时代,Web前端技术发挥着至关重要的作用,它为用户提供了直观、友好的界面体验。本次,我将为大家详细描述一个Web前端项目实例——构建交互式在线书店。该项目涵盖了多个关键方面&…

ssm学生成绩管理系统-海豚

ssm学生成绩管理系统-海豚 ssm学生成绩管理系统。 功能:登录,学生信息管理,课程信息,成绩信息, 技术:java,ssm,mybatics,jsp 平台:eclispe或者idea,mysql5.7…

使用Spring AI 和 LLM 实现数据库查询

AIDocumentLibraryChat 项目已扩展为支持提问来搜索关系数据库。用户可以输入一个问题,然后嵌入搜索相关的数据库表和列来回答问题。然后,LLM 获取相关表的数据库架构,并根据找到的表和列生成一个 SQL 查询,来展示结果回答问题。 …

Beyond Compare 提示“缺少评估信息或损坏”,无法打开只要操作一行命令就可以了

在CMD 或者powershell下执行如下命令重新打开即可。 reg delete "HKEY_CURRENT_USER\Software\Scooter Software\Beyond Compare 4" /v CacheID /f重新打开,就ok 了

计算机视觉的详细学习计划

### 第一阶段:基础知识(1-2个月) #### 数学基础 - **线性代数**: - 课程:Khan Academy的线性代数课程 - 书籍:David C. Lay的《Linear Algebra and Its Applications》 - **微积分**: - …

express入门03增删改查

目录 1 搭建服务器2 静态文件托管3 引入bootstrap4 引入jquery5 编写后端接口5.1 添加列表查询方法5.2 添加路由5.3 添加数据表格 总结 我们前两篇介绍了如何利用express搭建服务器,如何实现静态资源托管。那利用这两篇的知识点,我们就可以实现一个小功能…

c++中main(int argc, char* argv[])参数详解

目录 一、main函数形式 1.无参数: 2.带有两个参数: 二、参数详解 1.int argc 2.char* argv[] 三、示例演示 一、main函数形式 在C中,main 函数可以有两种常见的参数形式: 1.无参数: 代码如下: i…