当前位置: 首页 > news >正文

上海网站开发招聘响应式网站和自适应网站

上海网站开发招聘,响应式网站和自适应网站,东莞seo网络推广专,网页制作与设计简称关于PyQt5信号槽机制的解析 信号槽机制是 Qt 框架中用于对象间通信的核心机制,它基于发布-订阅模式,能够实现松耦合的组件交互。 1. 信号槽机制的基本概念 信号(Signal) 信号是对象发出的一种通知,表示某个事件发生…

关于PyQt5信号槽机制的解析

信号槽机制是 Qt 框架中用于对象间通信的核心机制,它基于发布-订阅模式,能够实现松耦合的组件交互。


1. 信号槽机制的基本概念

信号(Signal)
  • 信号是对象发出的一种通知,表示某个事件发生了。例如,当用户点击按钮时,按钮会发出一个“点击”信号。
  • 信号本身不包含任何逻辑,只是通知其他对象发生了某件事。
槽(Slot)
  • 槽是对象中的一个函数,用于响应信号。例如,当按钮发出“点击”信号时,槽函数可以执行导入图片的逻辑。
  • 槽函数可以包含具体的业务逻辑。
连接(Connect)
  • 通过 connect 函数,将信号与槽关联起来。当信号发出时,槽函数会自动被调用。
  • 信号槽的连接是松耦合的,信号发出者不需要知道槽的具体实现。

2. 结合“导入图片”功能

假设我们有一个图片导入功能,用户点击“导入”按钮后,程序会从文件系统中选择一张图片并显示在界面上。我们可以用信号槽机制来实现这个功能。

组件
  1. 按钮(QPushButton)
    • 发出“点击”信号,表示用户点击了按钮。
  2. 文件对话框(QFileDialog)
    • 用于选择图片文件。
  3. 图片显示控件(QLabel)
    • 用于显示导入的图片。
信号槽设计
  1. 按钮点击信号
    • 当用户点击“导入”按钮时,按钮发出 clicked() 信号。
  2. 文件选择槽
    • 连接 clicked() 信号到一个槽函数,该槽函数打开文件对话框,让用户选择图片文件。
  3. 图片显示槽
    • 当用户选择图片文件后,文件对话框发出 fileSelected(QString) 信号,连接该信号到另一个槽函数,该槽函数将图片加载并显示在 QLabel 中。

关于功能点的解析

负责算法导入,手动标注功能

权重模型导入

为了适应不同模型的导入,先动态获取权重文件,接着在mainwindow.py初始化主界面的控件块信号与槽函数的连接时,开始预处理模型的加载,当用户点击选择了权重文件后,再将权重文件导入模型,开始加载模型,完成模型的真正导入。其次,前端主界面完成“Segment Angthing”的action设计后,标注软件就开始搭载语义分割时所需要的模型。

此外,在对前端的界面类进行实例化时,通过对segment_any文件夹进行遍历,读取到.pth权重文件,并根据高级函数action.triggered.connect(functools.partial(self.init_segment_anything, model_name))将目标权重作为选项添加到主界面的菜单选择块“算法”当中,具体的核心代码如下:

  1. model_names = sorted([pth for pth in os.listdir('segment_any') if pth.endswith('.pth') or pth.endswith('.pt')])  
  2.         #使用列表推导式获取目录 'segment_any' 下所有以 '.pth' 或 '.pt' 结尾的文件,并将文件名列表进行排序。  
  3.         self.pths_actions = {}  
  4.         for model_name in model_names:  
  5.             action = QtWidgets.QAction(self)  
  6.             action.setObjectName("actionZoom_in")  
  7.             action.triggered.connect(functools.partial(self.init_segment_anything, model_name))  
  8.             #设置functools.partial函数将权重文件添加至算法选项中
  9.             action.setText("{}".format(model_name))  
  10.             action.setCheckable(True)  
  11.         #根据指定目录下的模型文件,创建对应的 QAction 对象,并将这些对象存储在字典 self.pths_actions 中

当用户选中对应的算法权重后,以权重文件的名称为参数,利用functools.partial()这个高级连接函数,连接init_segment_anything槽函数,开始初始化模型环境。

读取到相应的权重文件的路径后,通过传入权重路径model_path实例化模型对象self.segany=SegAny(model_path),其中SegAny是segment_any.py文件内的类SegAny,在该类的初始化时运行已经导入的文件mini下的train.py文件中的use_net方法,为已经针对红外图像数据优化完毕的MiniSegNet模型,模型加载的代码具体如下:

  1. net = Yolact() #实例化模型  
  2.    net.detect.use_fast_nms = args.fast_nms  
  3.    net.detect.use_cross_class_nms = args.cross_class_nms  
  4.    #设置 Yolact 模型的检测器的参数,包括是否使用快速非极大值抑制(use_fast_nms)和是否使用跨类别的非极大值抑制(use_cross_class_nms)。  
  5.    net.load_weights(weights_path)#加载预训练权重到 Yolact 模型中  
  6.    net.eval()#将 Yolact 模型设置为评估(inference)模式 

至此模型调入完毕,显示“Use the checkpoint named best”(best为最佳权重文件名称”)

单帧手动标注

针对一张图像进行手动绘制多边形标签对象的原理同自动绘制多边形标签对象区别在于修改模式为手动添加标签点,再进行多边形的绘制。

手动绘制多边形是基于鼠标在图像显示窗口内进行了点击操作,由canvas.py内的mousePressEvent,mouseReleaseEvent,mouseMoveEvent三个函数来组成鼠标点击,鼠标释放,以及鼠标移动来实现在图像显示窗口内的设立新标签点,并且拖动鼠标完成多个标签点的新建,再通过canvas.py内的finish_draw函数,进入polygon_mode(绘制模式),从而把已经打好的标签点,记录为新的标签点,来重新绘制新的多边形,最终产生了目标标签对象即分割目标。绘制多边形轮廓,并未完成绘制的效果图

http://www.dtcms.com/a/554350.html

相关文章:

  • 蓝图网站建设网站开发推荐书籍
  • 网页站点什么意思软件定制公司设计方案
  • 湖北智能网站建设找哪家网站 提示危险
  • 垂直类网站怎么做织梦企业网站
  • Excel怎么批量快速修改批注?
  • TikTok限流:为什么TikTok视频没流量、零播放
  • 基于eeg脑电的认知负荷公开数据集
  • 织梦网站怎么做投票wordpress资源下载类主题
  • 安论坛网站建设网站界面建议
  • 基于电鱼 ARM 工控机的井下AI故障诊断方案——让煤矿远程监控更智能、更精准
  • 彩票网站该怎么建设wordpress建站过程
  • 织梦网站首页模板更换做网站需要多少人
  • 光刻胶分类与特性——g/i线光刻胶及东京应化TP-3000系列胶典型配方(上)
  • 医院哪个科室负责网站建设广州网站排名优化服务
  • 三轴云台之智能决策技术
  • 电子商城平台wordpress评论框优化
  • 专业网站建设模板下载小语种网站建设要点
  • 2025百度网盘提速解除限速
  • 管理中的心理学问:职场的合作模式,
  • 从演示到生产:构建可靠 AI 系统的 12-Factor Agent 方法论综合分析
  • 怎么介绍自己做的静态网站wordpress 设置导航
  • 登录网站后没有转页面引流推广接单
  • 电子电力技术的控制电路学习记录分享2
  • 操作系统基础·1 基础知识
  • 网易科技专访 GMI Cloud 创始人CEO Alex Yeh:以“产品+布局+服务”构建全球竞争力
  • 从零理解无感BLDC控制:STC官方开源方案原理图详解
  • 算术运算符与比较运算符
  • 越秀网站建设设计长春建站宣传
  • 品牌网站开发动态模块wordpress单页留言板
  • 蓝桥杯高校新生编程赛第三场题解——Java