【探索】用pyqt5给深度学习算法(SSD)搭建界面(GUI)

【探索】⽤pyqt5给深度学习算法(SSD)搭建界⾯(GUI)
毕设的开题答辩上,被教授怼了⼯作量和实⽤性,于是指导⽼师让我们⾃⼰加⼀个GUI,苦于菜鸟⼀只,从来没有接触过,只能从0开始学习……还是以⼝罩佩戴识别代码为例⼦。
以此记录下⾃⼰的学习过程,也希望能给其他⼈带来⼀点帮助,如有帮助,点个⼩赞,谢谢~
【1】需求:要实现视频流采集图像,然后将图像送⼊算法检测,再将检测结果绘制在采集到的图像,最后将图像在界⾯上显⽰出来,同时界⾯要控制上述流程。
【2】借鉴流程图
【3】绘制GUI界⾯
(1)准备⼯作:据说eric6是最理想的pyqt的IDE
使⽤anaconda+pyqt5+eric6
安装及配置: /weiaitaowang/article/details/52045360
更新pip时ptions.ReadTimeoutError: HTTPSConnectionPool(host='f 的解决办法:
1.管理员⾝份打开命令⾏
2.python -m pip install -U --force-reinstall pip
Sorry, please install QScintilla2 and
its PyQt5/PyQt4 wrapper.裤衩裙
Error: cannot import name ‘Qsci’
Press enter to continue…
解决⽅法:pip3 install QScintilla
pyqt和eric得快速上⼿参考
可以实现界⾯与逻辑分离
eric6 中 designer ⽆法启动的解决办法:安装缺少的 PyQt5 tools ,cmd 中:pip install PyQt5-tools
安装完后可以在⽬录下到我的是C:\Users\zwy\Anaconda3\Lib\site-packages\pyqt5_tools\Qt\bin 修改路径:设置>⾸选项>qt>qt⼯具>⽬录写到bin
可以成功打开
这⾥简单介绍下在这个项⽬中,我⽤到的控件:可降解塑料检测
A.⽤Qlabel显⽰图⽚
QLabel⽤于显⽰⽂本或图像,没有提供⽤户交互功能,本⽂主要是想⽤它来显⽰图像。
B.PushButton(各类按钮)
C.TextEdit(显⽰/提⽰⽂本)
现在ui⽂件已经绘制完成,我们要⽤eric将ui⽂件转化成.py⽂件:保存后关闭designer,右键点击ui⽂件,选择编译窗体,编译成功会有提⽰。返回源代码标签,会看见多了⼀个.py⽂件
双击该⽂件,可以看见窗体代码。
【突发状况】在被强制更新了windows之后,eric⽆法打开了(尝试了各种⽅法),退⽽求其次准备使⽤VS code 完成代码!!(正好电脑上有vs code……但其实应该试⼀下重装eric,毕竟vs code 环境还要重新调整,⽽且应该是没有eric构造槽函数⽅便——不想再⽤eric 的原因。。可能是因为被⽓到了!)
幸好已经⽤eric将ui⽂件转化为.py⽂件,⽤vs code转换会有⼀些⿇烦。
*1 功能1,点击按钮,打开⽂件选择界⾯,选择图⽚显⽰在lable上
a.定义事件函数:label_imgshow是我设置的label的subject名字
HISEQ2000
( self.label_imgshow.setText(_translate(“MainWindow”, “等待选择”)修改时换成你们⾃⼰设置的名字就可以
def on_op1_img_clicked(self):
"""        Slot documentation goes here.        """
# TODO: not implemented yet
# 打开⽂件对话框
imgName, imgType = OpenFileName(None,'选择图⽚','./','*.png;;*.jpg;;AllFile(*.*)','')
jpg = QtGui.QPixmap(imgName).scaled(self.label_imgshow.width(),self.label_imgshow.height())
self.label_imgshow.setPixmap(jpg)
暖风炉b.绑定事件:op1_img是我设置的选择图⽚的按钮subject名字;on_op1_img_clicked是事件名字
( self.op1_img.setText(_translate(“MainWindow”, “选择图⽚”)
self.op1__op1_img_clicked)
i52记error:最初 OpenFileName(None,……的None我写的self,会有报错(TypeError: getOpenFileName…)采空区处理方法
原因:
*2功能2,把SSD算法识别之后的结果绘画在label上
⾸先先理清思路。为了完成这个功能,我们有三个参数要跨⽂件进⾏通信。1.在界⾯程序中通过打开⽂件夹选择图⽚获取了图⽚路径,我们需要把这个路径传递给算法程序。2.并且如上图所⽰我们有两个功能,实时摄像头识别和图⽚识别,我们需要有个模式选择参数,1代表图像,0代表摄像头。3.算法接收到路径之后,进⾏图像处理,输出结果,需要将此结果绘制在label上。
a.跨⽂件的变量传递折腾了两三天,踩了⽆数坑,我的⽅法如下:
⾸先写个全局变量管理模块 globalvar.py。代码如下:
#globalvar.py#!/usr/bin/python# -*- coding: utf-8 -*-
def_init():
global _global_dict
_global_dict ={}
def set_value(name, value):
_global_dict[name]= value
def get_value(name, defValue=None):
try:
return _global_dict[name]
except KeyError:
return defValue
其次写个mainwindow.py来作为主函数,搭建沟通两个.py⽂件的桥梁:GUI程序名字:算法程序名字:tenforflow.py

本文发布于:2024-09-23 07:20:02,感谢您对本站的认可!

本文链接:https://www.17tex.com/tex/3/115771.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:选择   算法   图像   打开   程序   结果   没有   路径
留言与评论(共有 0 条评论)
   
验证码:
Copyright ©2019-2024 Comsenz Inc.Powered by © 易纺专利技术学习网 豫ICP备2022007602号 豫公网安备41160202000603 站长QQ:729038198 关于我们 投诉建议