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

基于PyQt Python的深度学习图像处理界面开发(一)

          Python标准库更多的适合处理后台任务,唯一的图形库tkinter使用起来很不方便,所以后来出现了针对Python图形界面开发的扩展库,例如PyQt。

        在介绍PyQt之前,必须先简单介绍一下Qt。Qt是一个C++可视化开发平台,是一个跨平台的C++图形用户界面应用程序框架(C++ GUI),能够为应用程序开发者提供建立图形用户界面所需的功能。Qt是完全面向对象的、易扩展,可应用于组件编程,并可以用于嵌入式开发。它是目前流行的Linux桌面环境KDE 的基础,是Linux和嵌入式操作系统下的主流图形界面开发环境,其最大优势在于只需编写一次代码,就能编译部署在任何操作系统和硬件上。因为擅长图形界面开发,如今更扩展到移动及嵌入式设备开发。对于商业软件公司来说极具价值,可以广泛应用于物联网特别是智能汽车、智能制造业等的研发。

        PyQt是一个创建Python GUI应用程序的工具包,是Qt和Python结合的一个产物,可以说是为了将Qt的功能用于Python开发的一个Qt的Python包装器。它是Python编程语言和Qt库的成功融合。

        PyQt上手难度还是比较高,不想掉发的,可以看我专栏其它的界面开发教程:

GUI界面开发_AI洲抿嘴的薯片的博客-CSDN博客

学完本文教程可接着学习更深层次教程:基于PyQt Python的深度学习图像处理界面开发(二)-CSDN博客

  第一步、安装:

  说来搞笑,安装这一步,可能就会出现问题,你能遇到的问题,基本百分之99别人也遇到过,如若安装不成功或者运行代码界面异常出不来,百度呗。

pip install pyqt5pip install pyqt5-tools

第二、Hello World代码:

# -*- coding: utf-8 -*-# Form implementation generated from reading ui file 'new.ui'
#
# Created by: PyQt5 UI code generator 5.15.2
#
# WARNING: Any manual changes made to this file will be lost when pyuic5 is
# run again.  Do not edit this file unless you know what you are doing.
import sys
import cv2
import time
from os import getcwd
from PyQt5.QtCore import Qt
from PyQt5 import QtCore, QtGui, QtWidgets
from PyQt5.QtWidgets import QFileDialog
import numpy as npclass Ui_Form(object):def setupUi(self, Form):Form.setObjectName("Form")Form.resize(490, 616)self.retranslateUi(Form)def retranslateUi(self, Form):_translate = QtCore.QCoreApplication.translateForm.setWindowTitle(_translate("Form", "天竺街潜水的八角"))if  __name__ == "__main__":app = QtWidgets.QApplication(sys.argv)baseWidget = QtWidgets.QWidget()  # 创建窗口的基类QWidget的实例ui = Ui_Form()  # 创建UI窗口的实例ui.setupUi(baseWidget)  # 以baseWidget作为传递参数baseWidget.show()##ui.LabHello.setText("Hello,被程序修改")    #可以修改窗体上标签的文字sys.exit(app.exec_())

69b472d1cabc41d6ac5e9673ca08c431.png

第三步、使用语法:

我这里总结一些常用的语法,比如按钮打开,文本显示结果,显示图片

QPushButton控件

用来给用户点击,来完成某种动作的控件,一般是矩形,一般作为登录按钮,注册按钮,关闭按钮

# -*- coding: utf-8 -*-# Form implementation generated from reading ui file 'new.ui'
#
# Created by: PyQt5 UI code generator 5.15.2
#
# WARNING: Any manual changes made to this file will be lost when pyuic5 is
# run again.  Do not edit this file unless you know what you are doing.
import sys
import cv2
import time
from os import getcwd
from PyQt5.QtCore import Qt
from PyQt5 import QtCore, QtGui, QtWidgets
from PyQt5.QtWidgets import QFileDialog
import numpy as npclass Ui_Form(object):def setupUi(self, Form):Form.setObjectName("Form")Form.resize(490, 616)self.label = QtWidgets.QLabel(Form)self.label.setGeometry(QtCore.QRect(50, 20, 381, 20))self.label.setObjectName("label")self.pushButton = QtWidgets.QPushButton(Form)self.pushButton.setGeometry(QtCore.QRect(50, 60, 93, 28))self.pushButton.setObjectName("pushButton")self.retranslateUi(Form)def retranslateUi(self, Form):_translate = QtCore.QCoreApplication.translateForm.setWindowTitle(_translate("Form", "天竺街潜水的八角"))self.label.setText(_translate("Form", "<html><head/><body><p><span style=\" font-size:12pt; font-weight:600;\">天竺街潜水的八角</span></p></body></html>"))self.pushButton.setText(_translate("Form", "选择"))if  __name__ == "__main__":app = QtWidgets.QApplication(sys.argv)baseWidget = QtWidgets.QWidget()  # 创建窗口的基类QWidget的实例ui = Ui_Form()  # 创建UI窗口的实例ui.setupUi(baseWidget)  # 以baseWidget作为传递参数baseWidget.show()##ui.LabHello.setText("Hello,被程序修改")    #可以修改窗体上标签的文字sys.exit(app.exec_())

aeda85bc19574323b4ae718bffcdfcda.png

QLabel控件

QLabel控件是PyQt中一个常用的控件,它不仅可以作为一个占位符显示不可编辑的文本或图片(展示GIF动画图片),还可以被用作提示标记为其他控件;一些纯文本、链接或富文本可以显示在QLabel标签上

# -*- coding: utf-8 -*-# Form implementation generated from reading ui file 'new.ui'
#
# Created by: PyQt5 UI code generator 5.15.2
#
# WARNING: Any manual changes made to this file will be lost when pyuic5 is
# run again.  Do not edit this file unless you know what you are doing.
import sys
import cv2
import time
from os import getcwd
from PyQt5.QtCore import Qt
from PyQt5 import QtCore, QtGui, QtWidgets
from PyQt5.QtWidgets import QFileDialog
import numpy as npclass Ui_Form(object):def setupUi(self, Form):Form.setObjectName("Form")Form.resize(490, 616)self.label = QtWidgets.QLabel(Form)self.label.setGeometry(QtCore.QRect(50, 20, 381, 20))self.label.setObjectName("label")self.retranslateUi(Form)def retranslateUi(self, Form):_translate = QtCore.QCoreApplication.translateForm.setWindowTitle(_translate("Form", "天竺街潜水的八角"))self.label.setText(_translate("Form", "<html><head/><body><p><span style=\" font-size:12pt; font-weight:600;\">天竺街潜水的八角</span></p></body></html>"))if  __name__ == "__main__":app = QtWidgets.QApplication(sys.argv)baseWidget = QtWidgets.QWidget()  # 创建窗口的基类QWidget的实例ui = Ui_Form()  # 创建UI窗口的实例ui.setupUi(baseWidget)  # 以baseWidget作为传递参数baseWidget.show()##ui.LabHello.setText("Hello,被程序修改")    #可以修改窗体上标签的文字sys.exit(app.exec_())

0516604e6e3040269c12f31ee6f3604c.png

QImage

QImage 类在pyqt中的作用主要是I/O和直接逐像素点访问图像数据,QImage类提供了一个硬件无关的图像表示方法,该图像可以逐像素被访问和用于画图设备;故可以通过该 QImage 类对工业相机获取到的图像数据进行显示

# -*- coding: utf-8 -*-# Form implementation generated from reading ui file 'new.ui'
#
# Created by: PyQt5 UI code generator 5.15.2
#
# WARNING: Any manual changes made to this file will be lost when pyuic5 is
# run again.  Do not edit this file unless you know what you are doing.
import sys
import cv2
import time
from os import getcwd
from PyQt5.QtCore import Qt
from PyQt5 import QtCore, QtGui, QtWidgets
from PyQt5.QtWidgets import QFileDialog
import numpy as npclass Ui_Form(object):def setupUi(self, Form):Form.setObjectName("Form")Form.resize(490, 616)self.label = QtWidgets.QLabel(Form)self.label.setGeometry(QtCore.QRect(50, 20, 381, 20))self.label.setObjectName("label")self.pushButton = QtWidgets.QPushButton(Form)self.pushButton.setGeometry(QtCore.QRect(50, 60, 93, 28))self.pushButton.setObjectName("pushButton")self.label_2 = QtWidgets.QLabel(Form)self.label_2.setGeometry(QtCore.QRect(50, 100, 400, 400))self.label_2.setObjectName("label_2")self.retranslateUi(Form)def retranslateUi(self, Form):_translate = QtCore.QCoreApplication.translateForm.setWindowTitle(_translate("Form", "天竺街潜水的八角"))self.label.setText(_translate("Form", "<html><head/><body><p><span style=\" font-size:12pt; font-weight:600;\">天竺街潜水的八角</span></p></body></html>"))self.pushButton.setText(_translate("Form", "选择"))frameClone = cv2.imread("background.png")frameClone = cv2.resize(frameClone,(400,400))# 在Qt界面中显示人脸show = cv2.cvtColor(frameClone, cv2.COLOR_BGR2RGB)showImage = QtGui.QImage(show.data, show.shape[1], show.shape[0], QtGui.QImage.Format_RGB888)self.label_2.setPixmap(QtGui.QPixmap.fromImage(showImage))QtWidgets.QApplication.processEvents()if  __name__ == "__main__":app = QtWidgets.QApplication(sys.argv)baseWidget = QtWidgets.QWidget()  # 创建窗口的基类QWidget的实例ui = Ui_Form()  # 创建UI窗口的实例ui.setupUi(baseWidget)  # 以baseWidget作为传递参数baseWidget.show()##ui.LabHello.setText("Hello,被程序修改")    #可以修改窗体上标签的文字sys.exit(app.exec_())

d583b223a7ca4d54bf17f20bfc122fb6.png

相关文章:

基于PyQt Python的深度学习图像处理界面开发(一)

Python标准库更多的适合处理后台任务&#xff0c;唯一的图形库tkinter使用起来很不方便&#xff0c;所以后来出现了针对Python图形界面开发的扩展库&#xff0c;例如PyQt。 在介绍PyQt之前&#xff0c;必须先简单介绍一下Qt。Qt是一个C可视化开发平台&#xff0c;是一个跨平台的…...

【Linux网络】Linux网络编程套接字,UDP与TCP

&#x1f4dd;个人主页&#x1f339;&#xff1a;Eternity._ ⏩收录专栏⏪&#xff1a;Linux “ 登神长阶 ” &#x1f339;&#x1f339;期待您的关注 &#x1f339;&#x1f339; ❀Linux网络编程套接字 &#x1f4d2;1. 端口号&#x1f4dc;2. 初识TCP协议与UDP协议&#x1…...

Vue3 -- 强制统一包管理器工具【企业级项目配置保姆级教程6】

引言: 团队开发项目的时候,需要统一包管理器工具,因为不同包管理器工具下载同一个依赖,可能版本不一样,导致项目出现bug问题,因此包管理器工具需要统一管理!!所以就需要我们强制统一包管理器工具。 创建scripts目录和preinstall.js文件: 在根目录创建scritps/preinstal…...

Winform实现自制浏览器JavaScript注入

让我们一起走向未来 &#x1f393;作者简介&#xff1a;全栈领域优质创作者 &#x1f310;个人主页&#xff1a;百锦再新空间代码工作室 &#x1f4de;工作室&#xff1a;新空间代码工作室&#xff08;提供各种软件服务&#xff09; &#x1f48c;个人邮箱&#xff1a;[1504566…...

【工具插件类教学】在 Unity 中使用 iTextSharp 实现 PDF 文件生成与导出

目录 一、准备工作 1. 安装 iTextSharp 2. 准备资源文件 二、创建 ExportPDFTool 脚本 1、初始化 PDF 文件,设置字体 2、添加标题、内容、表格和图片 三、使用工具类生成 PDF 四、源码地址 在 Unity 项目中,我们有时会需要生成带有文本、表格和图片的 PDF 文件,以便…...

javascript用来干嘛的?赋予网站灵魂的语言

javascript用来干嘛的&#xff1f;赋予网站灵魂的语言 在互联网世界中&#xff0c;你所浏览的每一个网页&#xff0c;背后都有一群默默工作的代码在支撑着。而其中&#xff0c;JavaScript就像是一位技艺精湛的魔术师&#xff0c;它赋予了网页生命力&#xff0c;让原本静态的页…...

Flutter Getx状态管理

在 Flutter 开发中&#xff0c;状态管理是一个非常重要的话题。随着应用变得更加复杂&#xff0c;状态管理的方式也变得越来越多。Flutter 提供了多种状态管理的解决方案&#xff0c;如 Provider、Riverpod、BLoC 等&#xff0c;而在这些选项中&#xff0c;GetX 作为一个轻量级…...

《成法》读书笔记

稻盛和夫的《成法》是一部关于个人和企业成功哲学的作品&#xff0c;结合了他在经营京瓷和KDDI&#xff0c;以及重建日航&#xff08;JAL&#xff09;过程中的经验和智慧。 以下是这本书的读书笔记&#xff0c;涵盖其核心思想和重要概念&#xff1a; 1. 以“心”为本 内容概…...

TensorFlow 2.0 环境配置

官方文档&#xff1a;CUDA Installation Guide for Windows 官方文档有坑&#xff0c;windows的安装指南直接复制了linux的指南内容&#xff1a;忽略这些离谱的信息即可。 可以从官方文档知悉&#xff0c;cuda依赖特定版本的C编译器。但是我懒得为了一个编译器就下载整个visua…...

Ekman理论回归

Scientific reportsEkman revisited: Surface currents to the left of the winds in the Northern HemisphereVagn Walfrid Ekman1905年的理论描述了地球旋转受到风的作用&#xff0c;摩擦边界层中的流场&#xff0c;北半球总是在海表风的右侧&#xff0c;南半球总是在海表风的…...

算法演练----24点游戏

给定4个整数&#xff0c;数字范围在1~13之间任意使用-*/&#xff08;&#xff09;&#xff0c;构造出一个表达式&#xff0c;使得最终结果为24&#xff0c; 方法一 算法分析&#xff1a;加括号和取出重复表达式 # 导入精确除法模块&#xff0c;使得在Python2中除法运算的行为更…...

【学习心得】Python好库推荐——tiktoken

一、tiktoken是什么&#xff1f; tiktoken是一个快速BPE分词器&#xff0c;是由 OpenAI 开发的一个用于文本处理的 Python 库&#xff0c;主要用于将文本编码为数字序列&#xff08;称为 "tokens"&#xff09;&#xff0c;或将数字序列解码为文本。这一过程被称为 &q…...

MacBook不额外安装软件,怎样投屏到安卓手机上?

提起iPhone或MacBook的投屏&#xff0c;人们总会想到airplay功能。但离开了苹果生态&#xff0c;其他品牌的手机电脑就未必配备airplay功能了。 如果想要将MacBook的电脑屏幕共享到安卓手机或平板上&#xff0c;到底要怎样做&#xff1f;需要安装什么软件吗&#xff1f; 不需要…...

flink sql + kafka + mysql 如何构建实时数仓

构建一个基于 Flink SQL、Kafka 和 MySQL 的实时数据仓库(Data Warehouse)架构,可以通过流处理的方式实现高效、实时的数据集成与分析。以下是如何利用这三者构建实时数仓的步骤与实现: 架构概述 Kafka:作为流数据平台,负责接收和传输来自不同源系统(如应用日志、传感器…...

Go语言开发基于SQLite数据库实现用户表查询详情接口(三)

背景 上一章 Go语言开发基于SQLite数据库实现用户表新增接口(二) 这一章我们实现用户表的查询详情接口 代码实现 mapper层 type UserMapper interface {GetById(id uint64) (*model.User, error)}type userMapper struct { }func (m *userMapper) GetById(id uint64) (*mod…...

(11)(2.1.7) FETtec OneWire ESCs(二)

文章目录 前言 3 组态 4 可选功能 5 SITL模拟 6 故障排除 前言 &#xff01;Note 此功能在固件版本4.1.1及更高版本上可用。 3 组态 FTW掩码 SERVO_FTW_MASK 参数选择将哪些伺服输出&#xff08;如果有的话&#xff09;路由到 FETtec ESC。更改此参数后需要重新启动。…...

Springboot maven常见依赖、配置文件笔记

pom.xml文件 一、<parent> 在Maven项目中&#xff0c;pom.xml 文件中的 <parent> 元素用于定义父项目的坐标。使用 <parent> 可以实现继承机制&#xff0c;子项目可以从父项目继承配置信息&#xff0c;比如依赖管理、插件配置等。这样可以避免在多个子项目…...

Ceph后端两种存储引擎介绍

Ceph是一个可靠的、自治的、可扩展的分布式存储系统&#xff0c;它支持文件系统存储、块存储、对象存储三种不同类型的存储&#xff0c;以满足多样存储的需求。在Ceph的存储架构中&#xff0c;FileStore和BlueStore是两种重要的后端存储引擎&#xff0c;下面将分别进行详细介绍…...

C++入门基础知识140—【关于C++ 类构造函数 析构函数】

成长路上不孤单&#x1f60a;&#x1f60a;&#x1f60a;&#x1f60a;&#x1f60a;&#x1f60a; 【14后&#x1f60a;///C爱好者&#x1f60a;///持续分享所学&#x1f60a;///如有需要欢迎收藏转发///&#x1f60a;】 今日分享关于C 类构造函数 & 析构函数的相关内容…...

基于标签相关性的多标签学习

✨✨ 欢迎大家来访Srlua的博文&#xff08;づ&#xffe3;3&#xffe3;&#xff09;づ╭❤&#xff5e;✨✨ &#x1f31f;&#x1f31f; 欢迎各位亲爱的读者&#xff0c;感谢你们抽出宝贵的时间来阅读我的文章。 我是Srlua小谢&#xff0c;在这里我会分享我的知识和经验。&am…...

3分钟搞定!GetQzonehistory教你永久保存QQ空间青春回忆

3分钟搞定&#xff01;GetQzonehistory教你永久保存QQ空间青春回忆 【免费下载链接】GetQzonehistory 获取QQ空间发布的历史说说 项目地址: https://gitcode.com/GitHub_Trending/ge/GetQzonehistory 还在担心那些承载着青春记忆的QQ空间说说会消失吗&#xff1f;GetQzo…...

10分钟快速上手:使用html-to-docx实现HTML到Word文档的无缝转换

10分钟快速上手&#xff1a;使用html-to-docx实现HTML到Word文档的无缝转换 【免费下载链接】html-to-docx HTML to DOCX converter 项目地址: https://gitcode.com/gh_mirrors/ht/html-to-docx 还在为网页内容无法完美转换为Word文档而烦恼吗&#xff1f;每次复制粘贴H…...

如何快速修复损坏的QR码:QrazyBox终极指南

如何快速修复损坏的QR码&#xff1a;QrazyBox终极指南 【免费下载链接】qrazybox QR Code Analysis and Recovery Toolkit 项目地址: https://gitcode.com/gh_mirrors/qr/qrazybox 你是否曾遇到过打印的二维码被咖啡渍污染&#xff0c;或者手机拍摄的二维码模糊不清&…...

Office自定义界面编辑器:打造你的专属Office工作台

Office自定义界面编辑器&#xff1a;打造你的专属Office工作台 【免费下载链接】office-custom-ui-editor Standalone tool to edit custom UI part of Office open document file format 项目地址: https://gitcode.com/gh_mirrors/of/office-custom-ui-editor 你是否厌…...

Upscayl Windows编译深度解析:从Vulkan初始化失败到成功构建的专业指南

Upscayl Windows编译深度解析&#xff1a;从Vulkan初始化失败到成功构建的专业指南 【免费下载链接】upscayl &#x1f199; Upscayl - #1 Free and Open Source AI Image Upscaler for Linux, MacOS and Windows. 项目地址: https://gitcode.com/GitHub_Trending/up/upscayl…...

Qt串口通信与STM32 PWM实战:滑动条控制RGB灯全流程解析

1. 项目概述与核心价值最近在做一个智能家居控制面板的原型&#xff0c;核心需求之一就是通过一个直观的图形界面&#xff0c;去实时调节RGB氛围灯的亮度和颜色。这听起来像是把手机App上的功能搬到了嵌入式设备上&#xff0c;但背后的实现链路却完全不同。我选择了Qt作为上位机…...

CANN/asc-devkit RTC运行时编译指南

RTC 【免费下载链接】asc-devkit 本项目是CANN 推出的昇腾AI处理器专用的算子程序开发语言&#xff0c;原生支持C和C标准规范&#xff0c;主要由类库和语言扩展层构成&#xff0c;提供多层级API&#xff0c;满足多维场景算子开发诉求。 项目地址: https://gitcode.com/cann/a…...

Unity动态设置Layer与摄像机屏蔽的完整闭环方案

1. 这不是“加个Layer”那么简单&#xff1a;为什么动态设置Layer常被误用却没人深究在Unity项目里&#xff0c;我见过太多人把“给GameObject动态设置Layer”当成一个随手就能调用的API——go.layer 12;&#xff0c;敲完回车&#xff0c;心里就默认“好了”。结果跑起来发现&…...

你的仿真传感器数据准吗?Gazebo中激光雷达与深度相机的噪声模型配置与Rviz可视化调参实战

高保真机器人仿真&#xff1a;Gazebo传感器噪声模型与Rviz可视化调参全指南 在机器人算法开发中&#xff0c;仿真环境的真实性直接决定了算法测试的有效性。许多SLAM和导航算法在仿真环境中表现优异&#xff0c;一旦部署到真实机器人上却出现各种问题&#xff0c;这往往源于仿真…...

Aimmy终极模型选择指南:5个秘诀帮你为不同游戏找到最佳ONNX模型

Aimmy终极模型选择指南&#xff1a;5个秘诀帮你为不同游戏找到最佳ONNX模型 【免费下载链接】Aimmy Universal Second Eye for Gamers with Impairments (Universal AI Aim Aligner (AI Aimbot) - ONNX/YOLOv8 - C#) 项目地址: https://gitcode.com/gh_mirrors/ai/Aimmy …...