使用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插件,弹…

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

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

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

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

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

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

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 了

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…

私域运营技术干货 | 基于精准用户分群的个性化智能外呼策略实践

智能外呼产品经过了近几年的发展,作为一种用户触达的手段,普及率越来越高。但是智能外呼产品本身的劣势就是客户黏性差,迁移成本低,导致市场竞争非常激烈,各家都是拼价格拼线路资源,同质化严重。如何建立云…

游戏报错steam_api.dll丢失怎么解决?steam_api.dll缺失的7种靠谱解决方法

steam_api.dll 是一个由 Valve Corporation 开发的动态链接库文件,专门用于其 Steam 游戏平台。这个文件是 Windows 操作系统下的一个重要组件,它确保了通过 Steam 平台发布的游戏能够正常运行,并且能够使用 Steamworks API 提供的各种功能。…

TIA博途Wincc_如何实现开机画面等待几秒后,自动跳转到主画面?

TIA博途Wincc_如何实现开机画面等待几秒后,自动跳转到主画面? 想要实现的功能: 上电开机后,在开机画面等待几秒后,自动跳转到主画面, 如下图所示,新建一个项目后,添加一个开机画面和主画面 如下图所示,在HMI变量中添加一个int型变量BitTime, 如下图所示,设置该变量…

怎么把pdf格式文件其中几页单独弄出来

在现代办公和学习环境中,pdf格式的文件因其跨平台兼容性和良好的保持原样特性而备受欢迎。然而,有时我们可能只需要pdf文件中的某几页,而不是整个文件。这时,将PDF文件中的特定页面单独提取出来就显得尤为重要。 搜索一下&#xf…

IDEA 高效插件工具

文章目录 LombokMaven Helper 依赖冲突any-rule(正则表达式插件)快速生成javadocGsonFormat (Aits) 将json解析成类Diagrams使用 类图SequenceDiagram时序图GenerateAllSetter(AltEnter)大小写转写String ManipulationGitToolBox 代码提交人activate-pow…

Flutter- AutomaticKeepAliveClientMixin 实现Widget保持活跃状态

前言 在 Flutter 中,AutomaticKeepAliveClientMixin 是一个 mixin,用于给 State 类添加能力,使得当它的内容滚动出屏幕时仍能保持其状态,这对于 TabBarView 或者滚动列表中使用 PageView 时非常有用,因为这些情况下你…