小白教程:PyQt5点击按钮,调用笔记本电脑摄像头将实时画面显示在label控件上,并且使用UI代码和逻辑代码分开的方式

这篇具有很好参考价值的文章主要介绍了小白教程:PyQt5点击按钮,调用笔记本电脑摄像头将实时画面显示在label控件上,并且使用UI代码和逻辑代码分开的方式。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

能力一般,水平有限,真心欢迎批评指正!以后会不断完善修改,如果对你有帮助欢迎点赞收藏!

小白教程,当我们掌握了一点点的Qt Designer的技能,得意于能够在界面上作画的时候,怎么编写其中的逻辑关系是我们进一步想要了解的,下面介绍了点击按钮-->调用笔记本电脑摄像头-->加载实时画面到TextLabel-->关闭摄像头的简单过程。建议不要一股脑的粘贴复制,消化吸收是目的,欢迎评论区的思想碰撞。

1、环境及语言:vscode编译器、python语言、已经安装好pyqt5、QtDesigner,在桌面新建名为test的文件夹(名字自己取),打开vscode,选择test文件夹打开。

小白教程:PyQt5点击按钮,调用笔记本电脑摄像头将实时画面显示在label控件上,并且使用UI代码和逻辑代码分开的方式,pyqt,python,视频,ui,vscode
2、在vscode的左侧资源管理器界面,右键选择PYQT: New Form,来到Qt Designer界面,创建Main Window, 拖进两个push Button控件和一个Label控件后,如下图所示。另外,要注意控件的变量名,后面在编写逻辑代码的时候很重要,例如下图箭头所指就是label控件的变量名了,可以自己定义,pushButton按钮的变量名也是这样。
其中显示界面label界面的变量名:DisplayInterface;实时采集:OpenpushButton;关闭相机:ClosepushButton。

小白教程:PyQt5点击按钮,调用笔记本电脑摄像头将实时画面显示在label控件上,并且使用UI代码和逻辑代码分开的方式,pyqt,python,视频,ui,vscode小白教程:PyQt5点击按钮,调用笔记本电脑摄像头将实时画面显示在label控件上,并且使用UI代码和逻辑代码分开的方式,pyqt,python,视频,ui,vscode

小白教程:PyQt5点击按钮,调用笔记本电脑摄像头将实时画面显示在label控件上,并且使用UI代码和逻辑代码分开的方式,pyqt,python,视频,ui,vscode

3、保存后,会在vscode左侧资源管理器中出现一个.ui结尾的文件,如下图所示,右键选择“Compile Form”(编译表单),会生成Ui_untitled.py文件。同时我们要自己手动创建一个Logic_code.py(名字自己起)的文件用来存储逻辑代码,这样一来前端和后端分开,编写逻辑的代码只需要知道UI界面上控件的变量名,就可以编写控件之间的关系。

小白教程:PyQt5点击按钮,调用笔记本电脑摄像头将实时画面显示在label控件上,并且使用UI代码和逻辑代码分开的方式,pyqt,python,视频,ui,vscode

4、在Logic_code.py文件中,首先最基本的,我们要导入库和包、入口函数。

import sys # sys模块包含了与Python解释器和它的环境有关的函数
import cv2 # cv2是python中计算机视觉库OpenCV的一个模块,全称是Open Source Computer Vision Library(开放源代码计算机视觉库)
import Ui_untitled # 注意这里,导入的是你.ui文件所生成的.py文件的名字
# 以下是PyQt5的库和包
from PyQt5 import QtGui
from PyQt5.QtWidgets import QApplication, QMainWindow
from PyQt5.QtGui import QPixmap,QImage
from PyQt5.QtCore import QTimer

class Ui_MainWindow(QMainWindow, Ui_untitled.Ui_MainWindow):
    def __init__(self): # 构造方法
        super(Ui_MainWindow, self).__init__() # 运行父类的构造方法
        self.setupUi(self) # 传递自己

# 入口函数
if __name__ == '__main__':   
    app = QApplication(sys.argv)
    ui = Ui_MainWindow()
    ui.show()
    sys.exit(app.exec_())

现在你可以右键在终端中运行Logic_code.py文件试一试了,会出现你在Designer中所创作的界面。

5、接下来,我们要进行信号与槽的操作,简单理解就是一个信号触发一个动作,一个起因产生一个或者一个系列的后果,触发动作的信号可以是点击也可以是定时器脉冲。下面的代码是在第三步的基础上加了一些代码,你来找找看多了哪些代码,注意他们的所在行的位置缩进

import sys # sys模块包含了与Python解释器和它的环境有关的函数
import cv2 # cv2是python中计算机视觉库OpenCV的一个模块,全称是Open Source Computer Vision Library(开放源代码计算机视觉库)
import Ui_untitled # 注意这里,导入的是你.ui文件所生成的.py文件的名字
# 以下是PyQt5的库和包
from PyQt5 import QtGui
from PyQt5.QtWidgets import QApplication, QMainWindow
from PyQt5.QtGui import QPixmap,QImage
from PyQt5.QtCore import QTimer


class Ui_MainWindow(QMainWindow, Ui_untitled.Ui_MainWindow):
    def __init__(self): # 构造方法
        super(Ui_MainWindow, self).__init__()  # 运行父类的构造方法
        self.setupUi(self)  # 传递自己
########################################################
    # 在类构造函数中初始化一些额外的东西
        self.camera_timer = QTimer() # 创建定时器QTimer对象(camera_timer)        
        self.cap = cv2.VideoCapture() # 初始化cv2.VideoCapture对象  
        self.init() # 构建init方法
########################################################
    # 通过init方法集中绑定槽函数            
    def init(self):              
        self.OpenpushButton.clicked.connect(self.open_camera) # 绑定打开相机槽函数open_camera
        self.ClosepushButton.clicked.connect(self.close_camera) # 绑定关闭相机槽函数close_camera
        self.camera_timer.timeout.connect(self.show_image) # 绑定显示图片槽函数show_image
########################################################    
    # 以下是自定义的槽函数及其他衍生的自定义功能函数
    def open_camera(self): # 打开相机
        self.cap = cv2.VideoCapture(0)  # 摄像头
        self.camera_timer.start(40)     # 每40毫秒读取一次,即刷新率为25帧       
    def show_image(self): # 显示图片
        flag, self.image = self.cap.read()  # 从视频流中读取图片
        width,height,_ = self.image.shape # 行:宽,列:高
        ratio1 = width / self.DisplayInterface.width()  # (DisplayInterface 宽度)
        ratio2 = height / self.DisplayInterface.height()  # (DisplayInterface 高度)
        ratio = max(ratio1, ratio2)
        image_show = cv2.cvtColor(self.image, cv2.COLOR_BGR2RGB)  # opencv读的通道是BGR,要转成RGB
        image_show = cv2.flip(image_show, 1)  # 水平翻转,因为摄像头拍的是镜像的。
        self.showImage = QtGui.QImage(image_show.data, height, width, QImage.Format_RGB888)
        self.showImage.setDevicePixelRatio(ratio) # 按照缩放比例自适应 DisplayInterface 显示
        self.DisplayInterface.setPixmap(QPixmap.fromImage(self.showImage))  # 往显示视频的DisplayInterface里显示QImage
    def close_camera(self): # 关闭摄像头
        self.camera_timer.stop()  # 停止读取
        self.cap.release()  # 释放摄像头
        self.DisplayInterface.clear()  # 清除DisplayInterface组件上的图片
        self.DisplayInterface.setText("TextLabel") # 设置文字在界面上


if __name__ == '__main__':      
    app = QApplication(sys.argv)
    ui = Ui_MainWindow()
    ui.show()
    sys.exit(app.exec_())

 添加的代码具体做了以下几件事情:

(1)在类的构造函数中初始化一些额外的东西,比如定时器、视频流抓取函数、init初始化方法等;

(2)通过init方法集中绑定槽函数,规定了什么样的信号触发什么样的功能函数,比如定义名为OpenpushButton的按钮用点击的方式链接名为open_camera的槽函数;定义名为camera_timer的定时器通过“定时器超时触发器timeout”的方式链接名为show_image的槽函数等等;

(3)自定义槽函数及其他衍生的自定义功能函数,函数具体功能的实现:点击按钮-->调用笔记本电脑摄像头-->加载实时画面到TextLabel-->关闭摄像头。

效果如下:

小白教程:PyQt5点击按钮,调用笔记本电脑摄像头将实时画面显示在label控件上,并且使用UI代码和逻辑代码分开的方式,pyqt,python,视频,ui,vscode

能力一般,水平有限,真心欢迎批评指正!以后会不断完善修改,如果对你有帮助欢迎点赞收藏!建议不要一股脑的粘贴复制,消化吸收是目的,欢迎评论区的思想碰撞。文章来源地址https://www.toymoban.com/news/detail-795777.html

到了这里,关于小白教程:PyQt5点击按钮,调用笔记本电脑摄像头将实时画面显示在label控件上,并且使用UI代码和逻辑代码分开的方式的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • pyqt5 QMainWindow、Dialog点击关闭弹出是否确定关闭

    1.在QMainWindow()中,重写closeEvent函数实现窗口关闭事件。 2.在Dialog()中,重写closeEvent函数实现窗口关闭事件。  以上述两种情况做演示,其他情况同上。 注意:    在main()方法中可以看到:我们最终显示的是QMainWindow()类创建的窗口对象,如果想要实现关闭窗口触发弹窗提示

    2024年02月15日
    浏览(57)
  • PYQT5 ui转py后的调用

    将程序按文件夹分好类,检查时更加清晰如先建立resource文件夹,内部含images(存放图片)、UI(存放UI文件),resource文件夹与main等设计界面程序并列,ui转成py时放在resource文件夹下边。  login_pane.py(将转换好的login.py引用,在此处对界面进行设计) 将做好的界面类引到主界面

    2024年02月06日
    浏览(76)
  • 【Python】Pyqt5 主窗口调用子窗口demo

    背景: 通过主窗口的按钮调用其对应的窗口,代码比较简单,直接看,不懂的欢迎留言; 一共两个代码: ui_first.py :实现的是主窗口 ui_second.py:实现的是子窗口 点击开始按钮调用子窗口,点击关闭退出窗口; ui_first.py ui_second.py

    2024年02月11日
    浏览(44)
  • PyQt5实现多文件调用以及UI和逻辑分离

    UI   ui_untitled.py 逻辑代码页 目录 一、PyCharm+PyQt5的环境配置 二、使用Qt Designer将界面显示与业务逻辑分离 三、PyQt5工程中的多文件开发 转自原文链接 作为一个使用C++开发QT五年的“老”程序猿,总觉得使用C++开发GUI,是一个很费时费力或者说没有“钱”途的事情,因为现在

    2024年02月12日
    浏览(49)
  • PyQt5 将.ui文件转为.py文件并用另一个.py调用

    值得注意的是,Anaconda Prompt不能直接cd进其它盘 需要在根目录下进行切换盘符操作,使用 cd ..切进上一级目录,直到进入根目录: 这样就可以了 代码说明 生成的py文件: 运行代码即可成功展示UI界面: 成功展示UI Anaconda Prompt切换路径不能进入D盘_软件安装好难啊的博客-CSD

    2024年02月16日
    浏览(64)
  • PyQt5安装教程

    PyQt5 不在提供常用的Qt工具,比如图形界面开发工具 Qt Designer、国际化翻译 工具 Liguist,所以还需要使用如下命令安装常用的Qt工具。 使用pip install 命令安装PyQt5、PyQt5-tools 成功后,会在site-packages目录下看到安装PyQt5、PyQt5-tools,如下图所示:  为了让windows系统能够正确识别

    2024年02月01日
    浏览(62)
  • PyQt5入门教程

    假定已有环境如下: Windows Python VSCode (我们接下来会准备pyqt5和其desinger,没必要手搓qt5界面代码,手搓它,还不如用Tkinter) 1.安装PyQt5 下面使用pip来安装PyQt5, (pip3也行) 豆瓣镜像安装 2. 因为Qt Designer在Python3.5版本从PyQt5转移到了tools,故还需要安装pyqt5-tools 到这一步,

    2024年02月08日
    浏览(54)
  • PyQt5新手教程(五万字)

    编程式UI: 详细介绍了每个组件的属性,可以当作百科书学习一波 可视化UI : PyQt5 保姆级教程(从入门到精通) PyQt5 小白从零开始(汇总篇) PyQt5 快速上手(基础知识) PyQt5 快速入门(bilibili视频教程) (1) 可视化UI :基于Qt Designer可视化编辑工具进行组件拖放、属性设

    2024年02月04日
    浏览(44)
  • 【PyQT5教程】-02-UI组件

    QtWidgets 模块提供了多种按钮类,让你可以轻松地创建各种类型的按钮 QPushButton 是PyQt5中最常见的按钮类型之一,用于触发动作或执行操作。通过信号与槽机制,你可以将按钮的点击事件与特定的函数或操作关联起来。 QRadioButton 用于在一组选项中进行单选,用户只能选择其中

    2024年02月09日
    浏览(55)
  • PyQt5学习笔记--多线程处理、数据交互

    目录 1--引入多线程的原因 2--PyQt多线程的基本知识 3--多线程登录程序的实例 4--参考 ① 如果Qt只采用单线程任务的方式,当遇到数据处理慢的情形时,会出现GUI卡死的情况。 ② 使用下述例子展示单线程任务的缺陷: ③ 代码: ④ 结果展示: 当点击第一个button时,GUI会出现卡

    2023年04月16日
    浏览(51)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包