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


http://www.mrgr.cn/news/69604.html

相关文章:

  • .net core开发windows程序在国产麒麟操作系统中运行
  • 两个链表求并集、交集、差集
  • rocketmq——docker-compose安装
  • Mac保护电池健康,延长电池使用寿命的好方法
  • SNMP原理与配置
  • CAN总线数据帧格式详细介绍
  • 【含开题报告+文档+PPT+源码】基于Springboot和vue的电影售票系统
  • 政务培训|LLM大模型在政府/公共卫生系统的应用
  • stm32以太网接口:MII和RMII
  • 前端 性能优化 (图片与样式篇)
  • 【GESP】C++一级真题练习(202312)luogu-B3921,小杨的考试
  • 用 Python 进行建模优化:Pyomo
  • KALI-sqlmap更新
  • 【51单片机】I2C总线详解 + AT24C02
  • 代码随想录刷题记录(二十五)——54. 替换数字
  • RabbitMQ 篇-深入了解延迟消息、MQ 可靠性(生产者可靠性、MQ 可靠性、消费者可靠性)
  • 【java】通过<类与对象> 引入-> 链表
  • PHP反序列化漏洞(非常详细),零基础入门到精通,看这一篇就够了
  • Halcon 自定义滤波核
  • C++面向对象面试题及参考答案
  • PHP API的数据交互类型设计
  • Redis中的线程模型
  • Pytest-Bdd-Playwright 系列教程(8):pytest的高级代码生成功能
  • 6层板设计常用知识笔记
  • 密码学的基本原理
  • 【PB】 使用for循环,循环次数比较多时,datastore 获取数据异常的问题。