YOLOv5可视化界面

Pyside6可视化界面

安装Pyside6

激活之前的虚拟环境yolov5

在该环境的终端输入以下命令

image-20230804130702828

pip install -i https://pypi.tuna.tsinghua.edu.cn/simple pyside6

image-20230804130800817

输入where python找到当前使用的Python的路径

image-20230804130822697

找到该路径下的designer.exe文件(/Lib/site-packages/PySide6/designer.exe),然后发送到桌面创建快捷方式

image-20230804131040967

UI设计

  1. 打开designer
  2. 选择Main Window

image-20230804135928424

  1. 移除菜单栏

image-20230804140001249

  1. 拖两个label个一个line进来

image-20230804140218860

  1. 拖两个button进入,并进行命名

image-20230804140548127

  1. 调整界面,填写两个label里面文件,将界面调小一些

image-20230804140817179

  1. 居中对齐,同时勾选scaledContents

image-20230804140925757

  1. 元素名称更改

image-20230804141119743

  1. Ctrl+S保存,保存到上一部分训练数据集的文件内

image-20230804141230616

设置Pyside6-uic 工具

  1. 在当前虚拟环境的Python路径下,打开Scripts文件夹夹,找到pyside6-uic.exe,记住当前路径

image-20230804133419243

  1. 创建工具

image-20230804133534319

名称:PyUic(可自己定义)
程序:E:\kaifa\Anaconda3\envs\yolov5\Scripts\pyside6-uic.exe
实参:$FileName$ -o $FileNameWithoutExtension$.py
工作目录: $FileDir$
  1. 使用该工具

先在pycharm中打开刚才生成的ui文件

双击打不开的话,把文件拖到右边就可以打开了

image-20230804141619914

然后在【工具】选项卡下的【external tools】下,点击【PyUic】(这个名称是你刚才自己设计的)

image-20230804133624645

如果生成了相同文件名的.py文件,即说明设置成功

image-20230804141836515

编写运行程序

创建模板文件base_ui.py

import sys
import torch
from PySide6.QtGui import QPixmap, QImage
from PySide6.QtWidgets import QMainWindow, QApplication, QFileDialogfrom main_window import Ui_MainWindow #main_windows是刚才生成的ui对用的Python文件名def convert2QImage(img):height, width, channel = img.shapereturn QImage(img, width, height, width * channel, QImage.Format_RGB888)class MainWindow(QMainWindow, Ui_MainWindow):def __init__(self):super(MainWindow, self).__init__()self.setupUi(self)if __name__ == "__main__":app = QApplication(sys.argv)window = MainWindow()window.show()app.exec()

编译运行,弹出窗口说明成功

编写内部具体功能的代码

讲解视频:YOLOv5 Pyside6可视化界面

import sys
import cv2
import torch
from PySide6.QtGui import QPixmap, QImage
from PySide6.QtWidgets import QMainWindow, QApplication, QFileDialog
from PySide6.QtCore import QTimerfrom main_window import Ui_MainWindow  # main_windows是刚才生成的ui对用的Python文件名def convert2QImage(img):height, width, channel = img.shapereturn QImage(img, width, height, width * channel, QImage.Format_RGB888)class MainWindow(QMainWindow, Ui_MainWindow):def __init__(self):super(MainWindow, self).__init__()self.setupUi(self)self.model = torch.hub.load("./", "custom", path="runs/train/exp/weights/best.pt", source="local")self.video = Noneself.timer = QTimer()self.timer.setInterval(1)self.bind_slots()  # 绑定槽函数def image_pred(self, file_path): # 图片检测results = self.model(file_path) image = results.render()[0]return convert2QImage(image)def open_image(self): # 打开图片print("点击了检测图片按钮")self.timer.stop()  # 停止视频检测file_path = QFileDialog.getOpenFileName(self, dir="./data02/images/train", filter="*.jpg;*.png;*.jpeg")if file_path[0]:file_path = file_path[0]qimage = self.image_pred(file_path)self.input.setPixmap(QPixmap(file_path))self.output.setPixmap(QPixmap.fromImage(qimage))def video_pred(self):  # 视频检测ret, frame = self.video.read()if not ret:self.timer.stop()else:frame = cv2.cvtColor(frame, cv2.COLOR_BGR2RGB)self.input.setPixmap(QPixmap.fromImage(convert2QImage(frame)))results = self.model(frame)image = results.render()[0]self.output.setPixmap(QPixmap.fromImage(convert2QImage(image)))def open_video(self):  # 打开视频print("点击了检测视频!")file_path = QFileDialog.getOpenFileName(self, dir="./data02", filter="*.mp4")if file_path[0]:file_path = file_path[0]self.video = cv2.VideoCapture(file_path)self.timer.start()def bind_slots(self):  # 绑定槽函数self.det_image.clicked.connect(self.open_image)self.det_video.clicked.connect(self.open_video)self.timer.timeout.connect(self.video_pred)if __name__ == "__main__":app = QApplication(sys.argv)window = MainWindow()window.show()app.exec()

Gradio搭建Web GUI

安装Gradio

激活之前的虚拟环境yolov5

在该环境的终端输入以下命令

pip install -i https://pypi.tuna.tsinghua.edu.cn/simple gradio

实现

新建gradio_demo.py文件

输入图片、输出图片、预测函数

Gradio不支持实时检测

import torch
import gradio as grmodel = torch.hub.load("./", "custom", path="runs/train/exp/weights/best.pt", source="local")title = "基于Gradio的YOLOv5演示项目"desc = "这是一个基于Gradio的YOLOv5演示项目,非常简洁,非常方便!"base_conf, base_iou = 0.25, 0.45def det_image(img, conf_thres, iou_thres):model.conf = conf_thresmodel.iou = iou_thresreturn model(img).render()[0]gr.Interface(inputs=["image", gr.Slider(minimum=0, maximum=1, value=base_conf), gr.Slider(minimum=0, maximum=1, value=base_iou)],outputs=["image"],fn=det_image,title=title,description=desc,live=True,examples=[["./data02/images/train/30.jpg", base_conf, base_iou],["./data02/images/train/60.jpg", 0.3, base_iou]]
).launch(share=True)

如果想发布到网上,设置share=True参数,但是运行的时候会因为网络原因,报出下面的错误,可以通过提示的网址下载对应文件,重命名后放到相应的目录下,重新运行

image-20230804221752389

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

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

相关文章

Java IO流——【从零构建信息管理系统】

Java I/O流——【从零构建信息管理系统】 文章目录 什么是Java I/O流介绍理解字节流和字符流的区别 Java I/O流的作用Java I/O流方法InputStream方法Reader方法OutputStream方法Writer方法Java I/O体系的全体类 使用示例Java I/O流在实际应用中使用效果 什么是Java I/O流 介绍…

idea集成chatGPT,免费使用的bito神器

什么是Bito? Bito是一款在IntelliJ IDEA编辑器中的插件,Bito插件是由ChatGPT团队开发的,它是ChatGPT团队为了提高开发效率而开发的一款工具。ChatGPT团队是一支专注于自然语言处理技术的团队,他们开发了一款基于GPT的自然语言处理…

Azure创建第一个虚拟机

首先,登录到 Azure 门户 (https://portal.azure.com/)。在 Azure 门户右上角,点击“虚拟机”按钮,并点击创建,创建Azure虚拟机。 在虚拟机创建页面中,选择所需的基本配置,包括虚拟机名称、操作系统类型和版…

Pytorch个人学习记录总结 10

目录 优化器 优化器 官方文档地址:torch.optimhttps://pytorch.org/docs/stable/optim.html Debug过程中查看的grad所在的位置: model --> Protected Atributes --> _modules --> ‘model’ --> Protected Atributes --> _modules -…

期刊和会议缩写查询网站

1.https://pubmed.ncbi.nlm.nih.gov/?termMedicalImageComputingandComputer-AssistedIntervention 2. http://www.letpub.com.cn/index.php?pagejournalapp&viewsearch 3. https://blog.csdn.net/weixin_44557349/article/details/120825927 https://blog.csdn.net/ret…

Vue中如何更好地封装组件?

子组件接受父组件传递的事件 1.子组件使用事件名"$emit(父组件中传递的事件名,想给父组件传递的参数(可选))" click"$emit(click)" 2.子组件使用 v-on"$listeners" 父组件&#xff1a; <template><div id"app"><myCo…

第 358 场LeetCode周赛题解

A 数组中的最大数对和 数据范围小&#xff0c;直接暴力枚举数对 class Solution { public:int mx(int x) {//返回10进制表示的数的最大数字int res 0;for (; x; x / 10)res max(res, x % 10);return res;}int maxSum(vector<int> &nums) {int n nums.size();int r…

3.2 Tomcat基础

1. Tomcat概述 Tomcat 服务器是一个免费的开放源代码的Web 应用服务器&#xff0c;属于轻量级应用服务器。 Tomcat版本&#xff1a;apache-tomcat-8.5.76。 2.IDEA集成Tomcat 第一步 第二步 第三步 ​ 编辑切换为居中 添加图片注释&#xff0c;不超过 140 字&#xff0…

PyQt5组件之QLabel显示图像和视频

目录 一、显示图像和视频 1、显示图像 2、显示视频 二、QtDesigner 窗口简单介绍 三、相关函数 1、打开本地图片 2、保存图片到本地 3、打开文件夹 4、打开本地文本文件并显示 5、保存文本到本地 6、关联函数 7、图片 “.png” | “.jpn” Label 自适应显示 一、显…

ModaHub魔搭社区:从OpenAI实践看分工必要性,核心关注工作流相关的基础软件工具栈

从OpenAI实践看分工必要性,核心关注工作流相关的基础软件工具栈 参考海外OpenAI的率先尝试,工作流分工、点工具加持助力成功。一方面,OpenAI在《GPT-4 Technical Report》论文中[1]中披露了参与GPT 4开发的人员分工,共249人,角色分工明确,预训练、强化学习和对齐、部署等…

ORCA优化器浅析——CXform base class for all transformations

CXform CXforml类作为所有transformation的基础类&#xff0c;其包含了pattern成员m_pexpr。主要是在exploration和implementation expression流程中使用&#xff0c;主要调用Transform函数。其还包含返回相关xforms的集合函数&#xff0c;比如PbsIndexJoinXforms等。 class …

运算器组成实验

1.实验目的及要求 实验目的 1、熟悉双端口通用寄存器组的读写操作。 2、熟悉运算器的数据传送通路。 3、验证运算器74LS181的算术逻辑功能。 4、按给定数据&#xff0c;完成指定的算术、逻辑运算。 实验要求 1、做好实验预习。掌握运算器的数据传送通路和ALU的功能特性&…

微服务实战项目-学成在线-项目优化(redis缓存优化)

微服务实战项目-学成在线-项目优化(redis缓存优化) 1 优化需求 视频播放页面用户未登录也可以访问&#xff0c;当用户观看试学课程时需要请求服务端查询数据&#xff0c;接口如下&#xff1a; 1、根据课程id查询课程信息。 2、根据文件id查询视频信息。 这些接口在用户未认…

verilog学习笔记5——进制和码制、原码/反码/补码

文章目录 前言一、进制转换1、十进制转二进制2、二进制转十进制3、二进制乘除法 二、原码、反码、补码1、由补码计算十进制数2、计算某个负数的补码 前言 2023.8.13 天气晴 一、进制转换 1、十进制转二进制 整数&#xff1a;除以2&#xff0c;余数倒着写 小数&#xff1a;乘…

QT之时钟

QT之时钟 会用到一个时间类:qtime 定时类:qtimer #------------------------------------------------- # # Project created by QtCreator 2023-08-13T10:49:31 # #-------------------------------------------------QT += core guigreaterThan(QT_MAJOR_VERSION,…

css3新增选择器总结

目录 一、属性选择器 二、结构伪类选择器 三、伪元素选择器 四、UI状态伪类选择器 五、反选伪类选择器 六、target选择器 七、父亲选择器、后代选择器 八、相邻兄弟选择器、兄弟们选择器 一、属性选择器 &#xff08;除IE6外的大部分浏览器支持&#xff09; E&#…

springcloud 基础

面试题 SOA、分布式、微服务之间有什么关系和区别&#xff1f; 1.分布式架构是指将单体架构中的各个部分拆分&#xff0c;然后部署不同的机器或进程中去&#xff0c;SOA和微服务基本上都是分布式架构 师 2.SOA是一种面向服务的架构&#xff0c;系统的所有服务都注册在总线上&…

Multi-object navigation in real environments using hybrid policies 论文阅读

论文信息 题目&#xff1a;Multi-object navigation in real environments using hybrid policies 作者&#xff1a;Assem Sadek, Guillaume Bono 来源&#xff1a;CVPR 时间&#xff1a;2023 Abstract 机器人技术中的导航问题通常是通过 SLAM 和规划的结合来解决的。 最近…

TENNECO EDI 项目——X12与XML之间的转换

近期为了帮助广大用户更好地使用 EDI 系统&#xff0c;我们根据以往的项目实施经验&#xff0c;将成熟的 EDI 项目进行开源。用户安装好知行之桥EDI系统之后&#xff0c;只需要下载我们整理好的示例代码&#xff0c;并放置在知行之桥指定的工作区中&#xff0c;即可开始使用。 …

Vue框架

1.MVVM MVVM 是 Model-View-ViewModel 的简写。MVVM 就是将其中的 View&#xff08;可理解为操作界面&#xff09; 的 状态和行为抽象化&#xff0c;让我们将视图 UI 和业务逻辑分开 它可以取出 Model 的数据同时帮忙处理 View 中由于需要展示内容而涉及的业务逻辑 2…