PyQt5 结合 OpenCV 的开发之旅

多年 Python 开发经验,熟悉 Python,PyQt 以及 OpenCV 等图像处理; 喜欢捣鼓树莓派;熟悉 Linux,Shell 以及底层驱动开发;

OpenCV 有自己的 GUI,但是开发起来比较费劲,很多开发前端软件都是使用 PyQt。如何将二者完美的结合起来完成界面漂亮的前端图像处理软件?本文将详...

文章正文

背景

(1)本文主要根据作者多年的 Python 开发经验,以及带的多名实习生遇到的问题等情况总结的如何快速入门 PyQt 以及 PyQt 如何结合 Python 的 OpenCV 包应用到前端软件之中。

(2)本文需要有一定的Python基础,Python3或Python2都行,差别也不是本文主要问题,本文使用的Python3.6版本的以及PyQt5.9.2,OpenCV是 opencv_python 3.3.1+contrib(windows环境下,都是使用的32位的安装包)。

(3)安装包的列表如下(读者可去网上各自下载,这里只列出部分,有些包的依赖包安装的时候会自动下载)

  • python-3.6.3.exe
  • PyQt5-5.9.2-5.9.3-cp35.cp36.cp37-none-win32.whl
  • opencv_python-3.3.0+contrib-cp36-cp36m-win32.whl
  • matplotlib-2.1.0rc1-cp36-cp36m-win32.whl
  • numpy-1.13.3+mkl-cp36-cp36m-win32.whl
  • scipy-0.19.1-cp36-cp36m-win32.whl

正文

1.安装PyQt5以及PyQt5_tools

首先安装python开发环境(如果你对此过程熟悉请跳过),python官网下载python的安装包,这里下载的是python-3.6.3.exe(32位的),点击直接安装,安装完成后会在你选择的安装目录出现一个Python36-32的目录(我的安装目录是“C:\Python\Python36-32”),然后将目录添加到系统的环境变量之中去。打开windows的命令提示符窗口输入python然后回车如提示:

Python 3.6.3 (v3.6.3:2c5fed8, Oct  3 2017, 17:26:49) [MSC v.1900 32 bit (Intel)] on win32
Type "help", "copyright", "credits" or "license" for more information.

代表python环境安装成功了。接着输入pip –V 如提示:

pip 9.0.1 from c:\python\python36-32\lib\site-packages (python 3.6)

代表pip也可以使用了(pip只是一个软件管理工具和linux下的apt-get类似)。

如果未完成上述操作请重新尝试。只有完成了上面的操作接下来才能更好的安装PyQt5。

接下来安装PyQt5:

如果你的电脑是联网的话可以直接使用pip命令安装。在命令提示符内输入 pip install PyQt5 的命令即可进行安装。安装前系统会自动下载安装包和一些其他的依赖的安装包,这种方法是比较方便的安装方法。但需要花费一点时间。但要注意一点python版本低于3.4的好像并不支持PyQt5的安装,若是低版本的python需要到PyQt的官网去下载对应版本的安装包进行安装。同样适用 pip install pyqt5tools 命令安装上PyQt5tools。

如果没有连接网络的电脑需要下载PyQt5的安装包进行安装。安装包的全名称,在背景篇列表中有提到。同样是使用pip安装,打开命令提示符窗口,进入到有安装包的目录下,使用命令: pip install PyQt5-5.9.2-5.9.3-cp35.cp36.cp37-none-win32.whl。即可进行安装。如提示缺少什么依赖包可直接去网上下载其依赖包使用pip命令安装,之后在进行安装PyQt5即可;

安装完成后在安装目录下的 “C:\Python\Python36-32\Lib\site-packages”目录下会出现PyQt5目录和PyQt5-5.9.2.dist-info目录。这时候重新打开命令提示符窗口输入python ,进入python的命令行模式 输入一下import PyQt5 ;没有提示任何错误代表安装成功。否则说明安装失败,安装后一定要重新打开命令提示符窗口进行验证。

安装好PyQt5tools后会在“C:\Python\Python36-32\Lib\site-packages”目录下找到一个pyqt5tools的目录进入到目录下,可找到一个designer.exe的应用程序,发送到桌面即可使用,这个就是用来快速设计Qt界面的工具。

2.PyQt5的快速入门

安装好PyQt5的环境之后我们就开始进入PyQt5的设计阶段,首先说一下这里要将两个简单的demo,让读者能快速的了解到如何使用PyQt5。

第一个PyQt5设计的界面

Qt里面有各种控件供开发者使用,最常用的就是按键、进度条、输入框、label等显示在界面值中。供用户使用的。下面一个简单的小程序可是使读者初步对Qt有个简单的认识。 首先创建一个demo1.py的文件,并打开输入如下内容:

import sys  
from PyQt5.QtWidgets import (QWidget, QPushButton, QApplication, QLabel) 
from PyQt5.QtCore import QCoreApplication  
# 以上三行就是导入程序中需要用的模块
class demo1_Window(QWidget):  # 接下来就是定义一个class, demo1_Window继承了Qwidget类
    def __init__(self):  #python中类定义的初始化,如果你不明白为啥这样写,那你就要回去看看python面向对象的操作步骤就知道了
        super().__init__()  
        self.initUI()#这句就是掉用自己定义的函数,界面上的左右元素都是在这个函数里定义显示的   
    def initUI(self):            
        self.btn = QPushButton('显示', self)# 定义一个显示按键,也就是实例化一个按键对象  
        self.btn.move(50, 150)  # 设置按键的显示的位置
        self.qbtn = QPushButton('退出', self)  # 定义一个退出的按键
        self.qbtn.move(150, 150)  # 设置退出按键的显示位置
        self.qbtn.clicked.connect(QCoreApplication.instance().quit)# 点击退出按键的事件处理方法  
        self.label = QLabel(self)# 定义一个label
        self.label.setText("<B>Hello World!</B>")# 设置label的内容
        self.label.hide()# 将label隐藏(因为下面需要点击按键显示出来)
        self.label.move(100, 80)# 设置其显示的位置
        self.btn.clicked.connect(self.setlabel)# 显示按键点击事件的处理方法
        self.setGeometry(300, 300, 300, 200) # 设置窗口的位置(300,300)和大小(300,200) 
        self.setWindowTitle('demo') # 设置窗口的名字   
    def setlabel(self):# 定义显示按键处理方法
        self.label.show()#显示label

if __name__ == '__main__': # 这个是如果运行的本脚是文件就执行以下语句 
    app = QApplication(sys.argv)  # 用来接收运行时传入的参数
    ex = demo1_Window()  # 实例化窗口对象
    ex.show()# 显示窗口
    sys.exit(app.exec_()) # 程序退出必须要执行的

如何执行程序呢? 打开命令提示符窗口,进入到你的python程序的目录下,执行:python demo1.py 即可(效果如下,当然以后还会教你如何打包成exe文件,直接双击就可以运行了,当然还有一个简单的方法也可以运行的,将你的demo1.py文件重命名为demo1.pyw,直接双击运行也是可以的(前提是你安装好了python等环境))

enter image description here

点击显示按钮:

enter image description here

2.2 Designer设计的UI界面

上面介绍的是手写界面,当然大型的软件开发不会这样写,工作量会比较大,一般都是采用Designer来设计界面;

2.2.1

隐藏内容 支付可见
购买文章 ¥1.99
订阅频道首月仅需 12 元/月,预计可省 1288 元
¥1.99
¥1.99购买
订阅频道免费读
× 订阅 Java 精选频道
首次订阅 ¥ 12 元/月 15元/月
订阅即可免费阅读所有精选内容