当前位置: 首页 > 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…...

在软件开发中正确使用MySQL日期时间类型的深度解析

在日常软件开发场景中&#xff0c;时间信息的存储是底层且核心的需求。从金融交易的精确记账时间、用户操作的行为日志&#xff0c;到供应链系统的物流节点时间戳&#xff0c;时间数据的准确性直接决定业务逻辑的可靠性。MySQL作为主流关系型数据库&#xff0c;其日期时间类型的…...

conda相比python好处

Conda 作为 Python 的环境和包管理工具&#xff0c;相比原生 Python 生态&#xff08;如 pip 虚拟环境&#xff09;有许多独特优势&#xff0c;尤其在多项目管理、依赖处理和跨平台兼容性等方面表现更优。以下是 Conda 的核心好处&#xff1a; 一、一站式环境管理&#xff1a…...

使用VSCode开发Django指南

使用VSCode开发Django指南 一、概述 Django 是一个高级 Python 框架&#xff0c;专为快速、安全和可扩展的 Web 开发而设计。Django 包含对 URL 路由、页面模板和数据处理的丰富支持。 本文将创建一个简单的 Django 应用&#xff0c;其中包含三个使用通用基本模板的页面。在此…...

DIY|Mac 搭建 ESP-IDF 开发环境及编译小智 AI

前一阵子在百度 AI 开发者大会上&#xff0c;看到基于小智 AI DIY 玩具的演示&#xff0c;感觉有点意思&#xff0c;想着自己也来试试。 如果只是想烧录现成的固件&#xff0c;乐鑫官方除了提供了 Windows 版本的 Flash 下载工具 之外&#xff0c;还提供了基于网页版的 ESP LA…...

Android15默认授权浮窗权限

我们经常有那种需求&#xff0c;客户需要定制的apk集成在ROM中&#xff0c;并且默认授予其【显示在其他应用的上层】权限&#xff0c;也就是我们常说的浮窗权限&#xff0c;那么我们就可以通过以下方法在wms、ams等系统服务的systemReady()方法中调用即可实现预置应用默认授权浮…...

使用 SymPy 进行向量和矩阵的高级操作

在科学计算和工程领域&#xff0c;向量和矩阵操作是解决问题的核心技能之一。Python 的 SymPy 库提供了强大的符号计算功能&#xff0c;能够高效地处理向量和矩阵的各种操作。本文将深入探讨如何使用 SymPy 进行向量和矩阵的创建、合并以及维度拓展等操作&#xff0c;并通过具体…...

微软PowerBI考试 PL300-在 Power BI 中清理、转换和加载数据

微软PowerBI考试 PL300-在 Power BI 中清理、转换和加载数据 Power Query 具有大量专门帮助您清理和准备数据以供分析的功能。 您将了解如何简化复杂模型、更改数据类型、重命名对象和透视数据。 您还将了解如何分析列&#xff0c;以便知晓哪些列包含有价值的数据&#xff0c;…...

Python 包管理器 uv 介绍

Python 包管理器 uv 全面介绍 uv 是由 Astral&#xff08;热门工具 Ruff 的开发者&#xff09;推出的下一代高性能 Python 包管理器和构建工具&#xff0c;用 Rust 编写。它旨在解决传统工具&#xff08;如 pip、virtualenv、pip-tools&#xff09;的性能瓶颈&#xff0c;同时…...

Docker 本地安装 mysql 数据库

Docker: Accelerated Container Application Development 下载对应操作系统版本的 docker &#xff1b;并安装。 基础操作不再赘述。 打开 macOS 终端&#xff0c;开始 docker 安装mysql之旅 第一步 docker search mysql 》〉docker search mysql NAME DE…...

NXP S32K146 T-Box 携手 SD NAND(贴片式TF卡):驱动汽车智能革新的黄金组合

在汽车智能化的汹涌浪潮中&#xff0c;车辆不再仅仅是传统的交通工具&#xff0c;而是逐步演变为高度智能的移动终端。这一转变的核心支撑&#xff0c;来自于车内关键技术的深度融合与协同创新。车载远程信息处理盒&#xff08;T-Box&#xff09;方案&#xff1a;NXP S32K146 与…...