from PyQt5 import QtCore, QtGui, QtWidgets
import sys
import cv2class Ui_MainWindow(QtWidgets.QWidget):def __init__(self, parent=None):super().__init__(parent)  # 父类的构造函数self.timer_camera = QtCore.QTimer()  # 定义定时器,用于控制显示视频的帧率self.cap = cv2.VideoCapture()  # 视频流self.CAM_NUM = 0  # 为0时表示视频流来自笔记本内置摄像头self.set_ui()  # 初始化程序界面self.slot_init()  # 初始化槽函数'''程序界面布局'''def set_ui(self):self.__layout_main = QtWidgets.QHBoxLayout()  # 总布局self.__layout_fun_button = QtWidgets.QVBoxLayout()  # 按键布局self.__layout_data_show = QtWidgets.QVBoxLayout()  # 数据(视频)显示布局self.button_open_camera = QtWidgets.QPushButton('打开相机')  # 建立用于打开摄像头的按键self.button_close = QtWidgets.QPushButton('退出')  # 建立用于退出程序的按键self.button_open_camera.setMinimumHeight(50)  # 设置按键大小self.button_close.setMinimumHeight(50)self.button_close.move(10, 100)  # 移动按键'''信息显示'''self.label_show_camera = QtWidgets.QLabel()  # 定义显示视频的Labelself.label_show_camera.setFixedSize(641, 481)  # 给显示视频的Label设置大小为641x481'''把按键加入到按键布局中'''self.__layout_fun_button.addWidget(self.button_open_camera)  # 把打开摄像头的按键放到按键布局中self.__layout_fun_button.addWidget(self.button_close)  # 把退出程序的按键放到按键布局中'''把某些控件加入到总布局中'''self.__layout_main.addLayout(self.__layout_fun_button)  # 把按键布局加入到总布局中self.__layout_main.addWidget(self.label_show_camera)  # 把用于显示视频的Label加入到总布局中'''总布局布置好后就可以把总布局作为参数传入下面函数'''self.setLayout(self.__layout_main)  # 到这步才会显示所有控件'''初始化所有槽函数'''def slot_init(self):self.button_open_camera.clicked.connect(self.button_open_camera_clicked)  # 若该按键被点击,则调用button_open_camera_clicked()self.timer_camera.timeout.connect(self.show_camera)  # 若定时器结束,则调用show_camera()self.button_close.clicked.connect(self.close)  # 若该按键被点击,则调用close(),注意这个close是父类QtWidgets.QWidget自带的,会关闭程序'''槽函数之一'''def button_open_camera_clicked(self):if self.timer_camera.isActive() == False:  # 若定时器未启动flag = self.cap.open(self.CAM_NUM)  # 参数是0,表示打开笔记本的内置摄像头,参数是视频文件路径则打开视频if flag == False:  # flag表示open()成不成功msg = QtWidgets.QMessageBox.warning(self, 'warning', "请检查相机于电脑是否连接正确", buttons=QtWidgets.QMessageBox.Ok)else:self.timer_camera.start(30)  # 定时器开始计时30ms,结果是每过30ms从摄像头中取一帧显示self.button_open_camera.setText('关闭相机')else:self.timer_camera.stop()  # 关闭定时器self.cap.release()  # 释放视频流self.label_show_camera.clear()  # 清空视频显示区域self.button_open_camera.setText('打开相机')def show_camera(self):flag, self.image = self.cap.read()  # 从视频流中读取show = cv2.resize(self.image, (640, 480))  # 把读到的帧的大小重新设置为 640x480show = cv2.cvtColor(show, cv2.COLOR_BGR2RGB)  # 视频色彩转换回RGB,这样才是现实的颜色showImage = QtGui.QImage(show.data, show.shape[1], show.shape[0],QtGui.QImage.Format_RGB888)  # 把读取到的视频数据变成QImage形式self.label_show_camera.setPixmap(QtGui.QPixmap.fromImage(showImage))  # 往显示视频的Label里 显示QImageif __name__ == '__main__':app = QtWidgets.QApplication(sys.argv)  # 固定的,表示程序应用ui = Ui_MainWindow()  # 实例化Ui_MainWindowui.show()  # 调用ui的show()以显示。同样show()是源于父类QtWidgets.QWidget的sys.exit(app.exec_())  # 不加这句,程序界面会一闪而过

pyqt5 显示摄像头画面相关推荐

  1. python_获取网络(大华)摄像头画面,并存储为图片和视频

    导入库 pip install opencv-python 代码 网络摄像头 ''' Opencv-python读取IP摄像头视频流 pip install opencv-python '''impo ...

  2. unity3d人脸识别(二),实现摄像头画面实时检测对比,实现刷脸功能

    离线版人脸识别参考我的另外一篇博客:https://blog.csdn.net/GottaYiWanLiu/article/details/90442274 接着上一章unity3d人脸识别(一)来讲 ...

  3. python控制摄像头拍照_python+opencv+pyqt5控制摄像头在Qlabel上显示

    import cv2 import numpy as numpy from PIL import * import sys from PyQt5.QtWidgets import * from PyQ ...

  4. win10摄像头可以用计算机里不显示,win10系统不显示摄像头的解决办法

    有关win10系统不显示摄像头的操作方法想必大家有所耳闻.但是能够对win10系统不显示摄像头进行实际操作的人却不多.其实解决win10系统不显示摄像头的问题也不是难事,小编这里提示两点:方法一.首先 ...

  5. WEB端显示摄像头实时图像数据

    目录 前言 方案详情 技术点 代码 C++部分 js部分 结果 存在问题 下一步计划 前言 为实现远程画面监视,大致上有两种思路:(1)实时视频数据的传输:(2)实时图像数据的传输.本篇主要讲述下实时 ...

  6. android 摄像头画面竖,OpenCV for Android(5):竖屏摄像头旋转问题

    cover.jpg 在开始加界面按钮的时候,发现一个别扭的问题,竖屏下摄像头会旋转90度.在之前的文章中,默认的布局形式是横屏的,可以看到在AndroidManifest.xml文件中,关于屏幕方向是 ...

  7. PyQt+Opencv-python多线程显示摄像头信息至QLabel,摄像头显示区域自由拉伸尺寸

    文章目录 前言 效果 资源下载 核心代码 编程思路 Camera.py Widget.py 前言   通过PyQt与Opencv-python实现多线程显示摄像头信息至QLabel,可以同时拉伸窗口, ...

  8. 网页端接入海康摄像头画面操作指南

    一.摄像头rtsp流画面测试 首先根据相关摄像头内附的说明书对摄像头进行安装以及wifi配置或者通过网线直连,配置完成后确保摄像头画面能够在手机APP或者相关应用程序上正常播放. 然后进入海康威视官网 ...

  9. C#界面设计--4--C#实现多个IP摄像头画面预览以及截图

    1.C# 多个ip摄像头画面预览以及截图界面 2.winform VS2013 .NET4 Client Profile 3.测试摄像头:海康威视,USB摄像头 4.需要输入IP地址,端口号,用户名和 ...

最新文章

  1. Java同一个类的不同实例_如何创建2个类实例注入不同类的依赖项实现(通过guice)?...
  2. linkText()的用法
  3. php自定义框架,「php 框架」自定义php框架(篇一) - seo实验室
  4. 网络编程套接字API
  5. blender使用_用Blender教青少年3D动画
  6. 如何解决代码嵌套太深问题
  7. Microsoft Expression Studio 3中文版
  8. (十二)通过Opencv blobFromImage实现数据标准化
  9. Vector、ArrayList和List的异同
  10. MyEclipse 2016 安装/破解
  11. 8.网页找不到服务器
  12. wifi分析仪怎么看哪个信道好_四大实用WiFi检测工具,调整信道避免干扰
  13. 如何建立你的思科CCNP实验室
  14. 云呐|国有资产管理信息系统,资产管理信息系统功能描述
  15. applet java_Java applet 类
  16. 云端运行python_云端部署python代码及安装MySQL
  17. 短进程优先的调度算法详解
  18. 计算机大学生三好学生申请书,大学生三好学生申请书
  19. 【好工具】安利一款优秀的图片浏览器
  20. 数据库关键字(保留字)

热门文章

  1. 文件名称对目标文件夹可能过长, 删除长文件夹中的文件
  2. 电脑分盘怎么合并?只需1分钟,轻松学会
  3. 关于centos7 删除软连接后,重启黑屏的问题
  4. Youku用户首页RSS订阅方法
  5. 华为IPSec高可靠性
  6. 计算机应用技术在公安,计算机应用技术在公安工作中应用探析.doc
  7. 关于城市夜景拍摄的一些学习总结
  8. 编辑部小姐姐 | 凌晨做完PPT又有大新闻!文摘菌佛系工作日常
  9. 【微服务】Day03(Nacos心跳机制、cart,stock项目业务、Dubbo概述)
  10. 用GPUImage来给视频加入水印