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.hqwc.cn/news/60455.html

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

相关文章

volatile,解决内存可见性引起的问题,wait和notify

补充:synchronized(务必会读(辛可肉耐子)会写),要搭配一个对象的时候,不一定非要是访问的this成员 synchronized(锁对象){ 代码块} public synchronized static void func(){} 静态方…

业务逻辑漏洞之支付逻辑漏洞

业务逻辑漏洞之支付逻辑漏洞 一、漏洞挖掘介绍二、Web漏洞产生的原因三、业务逻辑简述四、 常见业务逻辑漏洞的功能点五、支付逻辑漏洞5.1、漏洞背景5.2、产生原因5.3、测试方法 六、挖到这些漏洞有什么用? 一、漏洞挖掘介绍 漏洞定义: 官方定义&#…

网页版Java(Spring/Spring Boot/Spring MVC)五子棋项目(四)对战模块

网页版Java(Spring/Spring Boot/Spring MVC)五子棋项目(四)对战模块 一、约定前后端交互接口1. 建立连接接口2. 针对落子的请求和响应 二、实现前端页面三、实现后端1. 当用户进入房间,更新用户状态 OnlineUserManager…

ProComponent 用法学习

相信很多同学都用过 Ant Design 这一 react 著名组件库,而 ProComponents 则是在 antd 之上进行封装的页面级组件库(指一个组件就可以搞定一个页面)。它同时也是 Ant Design Pro 中后台框架所用的主要组件库。如果你手上有要用 react 开发的中…

valgrind检测内存泄漏

#include <stdio.h> #include <stdlib.h>int main(){int *q (int *)malloc(sizeof(int));*q 1;// int i 1;// if(i 1){// int *p (int *)malloc(sizeof(int));// *p 1;// free(p);// }// free(q)return 0; } 运行查看 valgrind --leak-checkfu…

【学习】若依源码(前后端分离版)之 “ 上传图片功能实现”

大型纪录片&#xff1a;学习若依源码&#xff08;前后端分离版&#xff09;之 “ 上传图片功能实现” 前言前端部分后端部分结语 前言 图片上传也基本是一个项目的必备功能了&#xff0c;所以今天和大家分享一下我最近在使用若依前后端分离版本时&#xff0c;如何实现图片上传…

虹科新闻 | 虹科与Power-MI正式建立合作伙伴关系

近日&#xff0c;虹科与Power-MI正式建立合作伙伴关系&#xff0c;双方就工业预测性维护领域进行深入的交流与合作&#xff0c;未来将共同致力于为亚洲市场提供完整的、更高质量的预测性维护解决方案&#xff0c;解决亚洲客户的工业自动化挑战。 虹科与Power-MI都表示十分期待…

vite跨域配置踩坑,postman链接后端接口正常,但是前端就是不能正常访问

问题一&#xff1a;怎么都链接不了后端地址 根据以下配置&#xff0c;发现怎么都链接不了后端地址&#xff0c;proxy对了呀。 仔细看&#xff0c;才发现host有问题 // 本地运行配置&#xff0c;及反向代理配置server: {host: 0,0,0,0,port: 80,// cors: true, // 默认启用并允…

接口测试过程中常见的接口安全性问题,通用测试点整理归纳

我们日常的接口测试工作主要是验证接口的功能性&#xff08;入参、出参、边界值等&#xff09;&#xff0c;在接口测试过程中遇到的一些接口安全性的问题&#xff0c;整理成了通用的测试点&#xff0c;不一定适用于全部的产品&#xff0c;仅做参考。 一、登录接口校验 验证登…

Android Framework底层原理之WMS的启动流程

一 概述 今天&#xff0c;我们介绍 WindowManagerService&#xff08;后续简称 WMS&#xff09;的启动流程&#xff0c;WMS 是 Android 系统中&#xff0c;负责窗口显示的的服务。在 Android 中它也起着承上启下的作用。 如下图&#xff0c;就是《深入理解 Android》书籍中的…

编织人工智能:机器学习发展历史与关键技术全解析

文章目录 1. 引言1.1 机器学习的定义1.2 重要性和应用场景重要性应用场景 2. 机器学习的早期历史2.1 初期理论与算法感知机决策树 2.2 早期突破支持向量机神经网络初探 3. 21世纪初期的发展3.1 集成学习方法随机森林XGBoost 3.2 深度学习的崛起卷积神经网络&#xff08;CNN&…

validator入门

validator中文文档地址和英文地址 https://docs.jboss.org/hibernate/validator/4.2/reference/zh-CN/html/validator-gettingstarted.html https://docs.jboss.org/hibernate/validator/6.0/reference/en-US/html_single/#preface自定义hibernate-validator校验 工具类Valid…