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

【PyQt】图像处理系统

@[toc]pyqt实现图像处理系统

图像处理系统

1.创建阴影去除ui文件
2.阴影去除代码

1.创建阴影去除ui文件

UI文件效果图:
在这里插入图片描述

1.1QT Desiger设置组件

1.两个Pushbutton按钮
在这里插入图片描述
在这里插入图片描述

2.两个label来显示图像

在这里插入图片描述
在这里插入图片描述

3.Text Browser来显示输出信息

在这里插入图片描述

1.2布局的设置

1.先不使用任何Layout,把所有控件 按位置 摆放在界面上

2.然后先从 最内层开始 进行控件的 Layout 设定

3.逐步拓展到外层 进行控件的 Layout设定

4.最后调整 layout中控件的大小比例, 优先使用 Layout的 layoutStrentch 属性来控制

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
最后设计总体布局

2.阴影去除代码

2.1 加载ui文件

import sysfrom PyQt5.QtGui import QIcon
from PyQt5.QtWidgets import QApplication, QWidget
from PyQt5 import uicclass MyWindow(QWidget):def __init__(self):super().__init__()self.init_ui()def init_ui(self):self.ui = uic.loadUi("./shadow_system.ui")print(self.ui.__dict__)  # 查看ui文件中有哪些控件if __name__=="__main__":app = QApplication(sys.argv)w = MyWindow()# 展示窗口w.ui.show()app.exec()

2.2 添加菜单栏

代码:

# 加载好ui文件之后再进行设置菜单栏menu = self.ui.menubarfile_menu = menu.addMenu("文件")file_menu.addAction("新建")file_menu.addAction("打开")file_menu.addAction("保存")edit_menu = menu.addMenu("编辑")edit_menu.addAction("复制")edit_menu.addAction("粘贴")edit_menu.addAction("剪切")

效果图:
在这里插入图片描述

2.3 设置图标

代码:

self.ui.setWindowIcon(QIcon('img.png')) # 设置图标

效果图:
在这里插入图片描述

2.4 标题名称的设置

代码:

self.ui.setWindowTitle("阴影处理系统")  # 修改标题的名称

效果图:

在这里插入图片描述

2.5 查看ui文件中的控件

代码:

 print(self.ui.__dict__)  # 查看ui文件中有哪些控件

print ui文件 dict

{‘centralwidget’: <PyQt5.QtWidgets.QWidget object at 0x000001D4E936EAF0>, ‘verticalLayout’: <PyQt5.QtWidgets.QVBoxLayout object at 0x000001D4E936E0D0>, ‘horizontalLayout’: <PyQt5.QtWidgets.QHBoxLayout object at 0x000001D4E936EB80>, 'pushButton': <PyQt5.QtWidgets.QPushButton object at 0x000001D4E936EC10>, 'pushButton_2': <PyQt5.QtWidgets.QPushButton object at 0x000001D4E9E21AF0>, ‘horizontalLayout_2’: <PyQt5.QtWidgets.QHBoxLayout object at 0x000001D4E9E21C10>, 'label': <PyQt5.QtWidgets.QLabel object at 0x000001D4E9E21CA0>, 'label_2': <PyQt5.QtWidgets.QLabel object at 0x000001D4E9E21D30>, 'textBrowser': <PyQt5.QtWidgets.QTextBrowser object at 0x000001D4E9E21DC0>, ‘menubar’: <PyQt5.QtWidgets.QMenuBar object at 0x000001D4E9E21E50>, ‘statusbar’: <PyQt5.QtWidgets.QStatusBar object at 0x000001D4E9E21EE0>}

2.6 初始化控件

我的习惯是将控件进行初始化,并且备注好,以便后续使用
代码:

self.label = self.ui.label  # label显示出入图像self.label_2 = self.ui.label_2 # 显示输出图像self.pushButton = self.ui.pushButton # 选择图片self.pushButton_2 = self.ui.pushButton_2 # 效果展示self.textBrowser = self.ui.textBrowser # 选择图像的窗口

2.7 按钮与槽

代码:

# 按钮与槽self.pushButton.clicked.connect(self.shadow_code)self.open.triggered.connect(self.open_pic)

2.8 open_pic 函数

代码:

 # 在Qlabel中显示文本def open_pic(self):# 打开文件夹获取文件路径self.dir_path_from, _ = QFileDialog.getOpenFileName(self, "选择文件", "./", "Png(*.png);;Jpg(*.jpg);;All Files(*)")print(self.dir_path_from)  # 得到路径# 添加图片到labelpixmap = QPixmap(f"{self.dir_path_from}")self.label.setPixmap(pixmap)self.label.setScaledContents(True)

功能:
实现打开本地文件夹,并将图像添加到label窗口中

2.9 算法代码调用

代码:

    def shadow_code(self):# 延迟一秒,执行 delayed_functionQTimer.singleShot(1000, self.delayed_function)  # 延时一秒print("延迟1秒")# 执行阴影去除算法def delayed_function(self):self.textBrowser.setPlainText("运行阴影去除算法。。。。。。。。。。。。")self.run_shadow_coda()    # 运行算法文件# 阴影去除算法def run_shadow_coda(self):# 在文本框中输出运行的算法文件self.textBrowser.append(f"运行算法文件:{self.py_shadow_path}")os.system(f"python {self.py_shadow_path}")# 延迟5s,进行输出无阴影图像QTimer.singleShot(5000, self.out_pic)

解释说明:

我所实现的是图像处理系统里面的阴影系统的处理,这里算法并没有采用,只是调用了个简单的py文件进行测试,这里使用了延时操作模拟算法运行过程。

2.10 输出图像

代码:

    def out_pic(self):# 获取输出路径file_name = os.path.basename(self.dir_path_from)  # 文件名+拓展名new_path = os.path.dirname(os.path.dirname(self.dir_path_from))self.new_path_1 = os.path.join(new_path + "/result_file/", file_name)# 将图像放入label中并且自适应缩放图像大小pixmap_2 = QPixmap(f"{self.new_path_1}")self.label_2.setPixmap(pixmap_2)self.label_2.setScaledContents(True)self.textBrowser.append(f"执行完毕,输出图像........")

3 整体展示效果

3.1选择文件

从菜单栏文件中进行选择打开所需要处理的图片,这里的图像支持PNG以及JPG类型。
在这里插入图片描述

3.2算法处理

点击算法处理就可以调用图像处理算法对选择的图像进行图像处理工作。
在这里插入图片描述

3.3 执行完毕效果

在这里插入图片描述

总结

设计了一个简单的图像处理系统,具备QT基本知识,可以用来入门QT,进一步掌握基本的qt软件设计。

相关文章:

【PyQt】图像处理系统

[toc]pyqt实现图像处理系统 图像处理系统 1.创建阴影去除ui文件 2.阴影去除代码 1.创建阴影去除ui文件 UI文件效果图&#xff1a; 1.1QT Desiger设置组件 1.两个Pushbutton按钮 2.两个label来显示图像 3.Text Browser来显示输出信息 1.2布局的设置 1.先不使用任何La…...

Ruby语言的循环实现

Ruby语言的循环实现深入探讨 在程序设计中&#xff0c;循环是一种常见的控制结构&#xff0c;用于重复执行某些代码块。不同的编程语言提供了不同类型的循环结构&#xff0c;以满足不同的需求。Ruby是一种灵活且易于使用的编程语言&#xff0c;其循环实现方式独具一格&#xf…...

javaEE安全开发 SQL预编译 Filter过滤器 Listener 监听器 访问控制

前言 java开发和其他开发的不同并且更安全就是因为他拥有简单的预编译机制 filter 过滤器 和 listener 监听器 这个很重要 就是 web应用监听器和过滤器是在 Servlet 之前的并且 我们的请求和响应都需要经过 两者的同意才可以通过 缺一不可 、 Listener 安全方面 监听器…...

一体机cell服务器更换内存步骤

一体机cell服务器更换内存步骤&#xff1a; #1、确认grdidisk状态 cellcli -e list griddisk attribute name,asmmodestatus,asmdeactivationoutcome #2、offline griddisk cellcli -e alter griddisk all inactive #3、确认全部offline后进行关机操作 shutdown -h now #4、开…...

Hadoop•用Web UI查看Hadoop状态词频统计

听说这里是目录哦 通过Web UI查看Hadoop运行状态&#x1f407;一、关闭防火墙二、在物理计算机添加集群的IP映射三、启动集群四、进入HDFS的Web UI 词频统计&#x1f9a9;1、准备文本数据2、在HDFS创建目录3、上传文件4、查看文件是否上传成功5、运行MapReduce程序6、查看MapRe…...

rhel7.9利用有网络环境打包ansible

RHEL7.9激活(可省略) # 注册 subscription-manager register --usernameyour_username --passwordyour_password --auto-attach # 查看订阅状态 subscription-manager list # 将 “enabled1” 改为 “enabled0” vi /etc/yum/pluginconf.d/subscription-manager.conf 配置阿…...

vim文本编辑器三种模式的转换关系

输入模式 ———— 末行模式 输入模式和末行模式不能相互转换。 输入模式 ———— 命令模式 输入模式可以通过点击esc进入命令模式。 命令模式可以通过点击i进入输入模式。 末行模式 ———— 命令模式 末行模式可以通过点击esc进入命令模式。 命令模式可以通过shift&…...

深度学习:大模型Decoding+MindSpore NLP分布式推理详解

大模型推理流程 1. 用户输入提示词&#xff08;Prompt&#xff09; 假设用户输入为&#xff1a;“从前&#xff0c;有一只小猫&#xff0c;它喜欢……” 我们的目标是让模型生成一段完整的故事。 2. 模型处理用户输入 2.1 分词&#xff1a;输入提示被分词为模型可以理解的…...

【JVM中的三色标记法是什么?】

JVM中的三色标记法是什么? 一、基本概念二、标记过程三、优势与问题四、漏标与多标的解决方案三色标记法(Tri-color Marking Algorithm)是Java虚拟机(JVM)中一种用于追踪对象存活状态的垃圾回收算法。 它基于William D. Hana和Mark S. McCulleghan在1976年提出的两色标记法…...

数据库服务体系结构

1. 数据库服务应用配置 服务进行配置有什么作用&#xff1f; 实现服务运行启动 实现某些功能 应用配置有三种方式&#xff1f; 利用编译安装进行配置 编写配置文件信息 ,.默认的配置文件: /etc/my.cnf 利用启动命令参数配置信息&#xff0c;mysqld_safe --skip-grant-tables --…...

vscode项目依赖问题

必读 一定要将前端下拉的项目备份一下&#xff0c;很容易运行导致依赖报错&#xff0c;重新下载 命令 使用幽灵分解器安装 pnpm install 替代 npm install 设置淘宝NPM镜像源 yarn config set registry https://registry.npmmirror.com 查看目前依赖包的版本 npm list ant-d…...

R数据分析:有调节的中介与有中介的调节的整体介绍

单独的有调节的中介或者有中介的调节好多同学还大概能看明白,但是两个东西一起说我发现大部分同学就懵逼了。今天我就尝试将两种方法一起讲讲,重点帮助大家厘清两种方法的异同。 先从整体上看下两者的概念: 有中介的调节首先落脚在调节,调节作用必须是显著的,并且这个调…...

RabbitMQ-消息可靠性以及延迟消息

目录 消息丢失 一、发送者的可靠性 1.1 生产者重试机制 1.2 生产者确认机制 1.3 实现生产者确认 &#xff08;1&#xff09;开启生产者确认 &#xff08;2&#xff09;定义ReturnCallback &#xff08;3&#xff09;定义ConfirmCallback 二、MQ的持久化 2.1 数据持久…...

Hack The Box-Starting Point系列Oopsie

一. 答案 With what kind of tool can intercept web traffic? (什么样的工具可以拦截Web流量?) proxyWhat is the path to the directory on the webserver that returns a login page?(Web服务器上返回登录页面的目录路径是什么?) /cdn-cgi/loginWhat can be modified …...

Linux运维篇-PAM安全模块配置

PAM是什么&#xff1f; PAM&#xff08;可插入认证模块&#xff09;是UNIX操作系统上一个实现模块化的身份验证的服务。当程序需要对用户进行身份验证时加载并执行。PAM文件通常位于/etc/pam.d目录中。 而Linux-PAM&#xff0c;是linux可插拔认证模块&#xff0c;是一套可定制…...

麒麟V10系统上安装Oracle

以下是在麒麟V10系统上安装Oracle数据库的详细步骤&#xff1a; 安装前准备 检查系统版本&#xff1a;使用uname -a、cat /etc/os-release等命令检查服务器是麒麟V10系统。 配置固定IP和本地yum源&#xff1a; 挂载麒麟V10的iso文件到/mnt目录&#xff0c;如mount -o loop Ky…...

项目开发实践——基于SpringBoot+Vue3实现的在线考试系统(七)

文章目录 一、题库管理模块实现1、新增题目功能实现1.1 页面设计1.2 前端功能实现1.3 后端功能实现1.4 效果展示2、题目列表功能实现2.1 页面设计2.2 前端功能实现2.3 后端功能实现2.3.1 后端查询题目列表接口实现2.3.2 后端编辑试题接口实现2.4 效果展示二、代码下载一、题库管…...

Elasticsearch:Jira 连接器教程第二部分 - 6 个优化技巧

作者&#xff1a;来自 Elastic Gustavo Llermaly 将 Jira 连接到 Elasticsearch 后&#xff0c;我们现在将回顾最佳实践以升级此部署。 在本系列的第一部分中&#xff0c;我们配置了 Jira 连接器并将对象索引到 Elasticsearch 中。在第二部分中&#xff0c;我们将回顾一些最佳实…...

Vulnhub Earth靶机攻击实战(一)

导语   首先需要我们进入到https://vulnhub.com/entry/the-planets-earth,755/地址去获取Earth靶机,然后导入到VMware中,如下所示。 文章目录 导入虚拟机信息收集路径扫描破解密码反射Shell提权总结导入虚拟机 下载并导入虚拟机,如下所示。 信息收集 首先我们通过arp-sc…...

51单片机——DS18B20温度传感器

由于DS18B20数字温度传感器是单总线接口&#xff0c;所以需要使用51单片机的一个IO口模拟单总线时序与DS18B20通信&#xff0c;将检测的环境温度读取出来 1、DS18B20模块电路 传感器接口的单总线管脚接至单片机P3.7IO口上 2、DS18B20介绍 2.1 DS18B20外观实物图 管脚1为GN…...

未来机器人的大脑:如何用神经网络模拟器实现更智能的决策?

编辑&#xff1a;陈萍萍的公主一点人工一点智能 未来机器人的大脑&#xff1a;如何用神经网络模拟器实现更智能的决策&#xff1f;RWM通过双自回归机制有效解决了复合误差、部分可观测性和随机动力学等关键挑战&#xff0c;在不依赖领域特定归纳偏见的条件下实现了卓越的预测准…...

多场景 OkHttpClient 管理器 - Android 网络通信解决方案

下面是一个完整的 Android 实现&#xff0c;展示如何创建和管理多个 OkHttpClient 实例&#xff0c;分别用于长连接、普通 HTTP 请求和文件下载场景。 <?xml version"1.0" encoding"utf-8"?> <LinearLayout xmlns:android"http://schemas…...

高频面试之3Zookeeper

高频面试之3Zookeeper 文章目录 高频面试之3Zookeeper3.1 常用命令3.2 选举机制3.3 Zookeeper符合法则中哪两个&#xff1f;3.4 Zookeeper脑裂3.5 Zookeeper用来干嘛了 3.1 常用命令 ls、get、create、delete、deleteall3.2 选举机制 半数机制&#xff08;过半机制&#xff0…...

测试markdown--肇兴

day1&#xff1a; 1、去程&#xff1a;7:04 --11:32高铁 高铁右转上售票大厅2楼&#xff0c;穿过候车厅下一楼&#xff0c;上大巴车 &#xffe5;10/人 **2、到达&#xff1a;**12点多到达寨子&#xff0c;买门票&#xff0c;美团/抖音&#xff1a;&#xffe5;78人 3、中饭&a…...

Python实现prophet 理论及参数优化

文章目录 Prophet理论及模型参数介绍Python代码完整实现prophet 添加外部数据进行模型优化 之前初步学习prophet的时候&#xff0c;写过一篇简单实现&#xff0c;后期随着对该模型的深入研究&#xff0c;本次记录涉及到prophet 的公式以及参数调优&#xff0c;从公式可以更直观…...

新能源汽车智慧充电桩管理方案:新能源充电桩散热问题及消防安全监管方案

随着新能源汽车的快速普及&#xff0c;充电桩作为核心配套设施&#xff0c;其安全性与可靠性备受关注。然而&#xff0c;在高温、高负荷运行环境下&#xff0c;充电桩的散热问题与消防安全隐患日益凸显&#xff0c;成为制约行业发展的关键瓶颈。 如何通过智慧化管理手段优化散…...

Linux-07 ubuntu 的 chrome 启动不了

文章目录 问题原因解决步骤一、卸载旧版chrome二、重新安装chorme三、启动不了&#xff0c;报错如下四、启动不了&#xff0c;解决如下 总结 问题原因 在应用中可以看到chrome&#xff0c;但是打不开(说明&#xff1a;原来的ubuntu系统出问题了&#xff0c;这个是备用的硬盘&a…...

有限自动机到正规文法转换器v1.0

1 项目简介 这是一个功能强大的有限自动机&#xff08;Finite Automaton, FA&#xff09;到正规文法&#xff08;Regular Grammar&#xff09;转换器&#xff0c;它配备了一个直观且完整的图形用户界面&#xff0c;使用户能够轻松地进行操作和观察。该程序基于编译原理中的经典…...

关于uniapp展示PDF的解决方案

在 UniApp 的 H5 环境中使用 pdf-vue3 组件可以实现完整的 PDF 预览功能。以下是详细实现步骤和注意事项&#xff1a; 一、安装依赖 安装 pdf-vue3 和 PDF.js 核心库&#xff1a; npm install pdf-vue3 pdfjs-dist二、基本使用示例 <template><view class"con…...

【学习笔记】erase 删除顺序迭代器后迭代器失效的解决方案

目录 使用 erase 返回值继续迭代使用索引进行遍历 我们知道类似 vector 的顺序迭代器被删除后&#xff0c;迭代器会失效&#xff0c;因为顺序迭代器在内存中是连续存储的&#xff0c;元素删除后&#xff0c;后续元素会前移。 但一些场景中&#xff0c;我们又需要在执行删除操作…...