pyqt5调用摄像头

news2024/12/26 23:04:21

pyqt5调用摄像头

1、UI布局

在这里插入图片描述

2、代码

# !/usr/bin/python
# -*- coding: utf-8 -*-

"""
@contact: 微信 1257309054
@file: t.py
@time: 2023/9/10 0:16
@author: LDC
"""

import sys

import cv2
from PyQt5 import QtCore
from PyQt5 import QtWidgets, QtGui
from PyQt5.QtGui import QPixmap, QImage

from camera import Ui_MainWindow


class OpenCamera(QtWidgets.QMainWindow, Ui_MainWindow):
    def __init__(self):
        super(OpenCamera, self).__init__()
        self.setupUi(self)  # 创建窗体对象
        self.init()
        self.label_video.setScaledContents(True)  # 图片自适应

    def init(self):
        # 打开摄像头
        self.btn_open_camera.clicked.connect(self.open_camera)
        # 关闭摄像头
        self.btn_close_camera.clicked.connect(self.close_camera)

    def open_camera(self):
        # 打开摄像头
        self.is_close = False
        cap = cv2.VideoCapture(0)
        w, h = 640, 360

        cap.set(3, w)
        cap.set(4, h)

        while True:

            success, img = cap.read()
            mirrow = cv2.flip(img, 1)
            width, height = mirrow.shape[:2]  # 行:宽,列:高

            if cv2.waitKey(1) == 27:
                break

            # 显示图片
            image_show = cv2.cvtColor(mirrow, cv2.COLOR_BGR2RGB)  # opencv读的通道是BGR,要转成RGB

            self.showImage = QtGui.QImage(image_show.data, height, width, QImage.Format_RGB888)
            self.label_video.setPixmap(QPixmap.fromImage(self.showImage))  # 往显示视频的Label里显示QImage

            # 是否关闭摄像头
            if self.is_close:
                break

        # 释放摄像头 release camera
        cap.release()
        self.label_video.clear()  # 清除label组件上的图片

    def close_camera(self):
        # 关闭摄像头
        self.is_close = True


if __name__ == '__main__':
    QtCore.QCoreApplication.setAttribute(QtCore.Qt.AA_EnableHighDpiScaling)  # 自适应分辨率

    app = QtWidgets.QApplication(sys.argv)
    ui = OpenCamera()
    ui.show()
    sys.exit(app.exec_())

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/995279.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

buuctf crypto 【RSA】解题记录

1.打开文件后,可以看到公钥,打开后解析公钥 2.分解一下n,得到p,q(使用yafu分解)后,写出脚本 3.运行,得到flag

Emscripten安装并配置环境变量

前言 Emscripten官网 官网有安装教程,但有些细节没有讲清楚,本文会很详细的讲解每一步。 一、下载 emsdk 包 emsdk – github地址 可以使用 git 去拉取,不过可能会超时拉取失败。 git clone https://github.com/emscripten-core/emsdk.…

电子信息工程专业课复习知识点总结:(一)电路分析基础

文章目录 第一章:电路的基本概念和电路定律第二章:电阻电路的等效变换第三章:电阻电路的一般分析方法第四章:电路定理1.叠加定理2.替代定理3.戴维南定律4.诺顿定律5.最大功率传输定理6.特勒根定理7.互易定理8.对偶定理 第七章 储能…

常用调优命令及各种 OOM 的应对策略【JVM调优】

文章目录 1. 常见的调优命令2. 常见的性能调优3. 常用的调优工具4. 各种 OOM 的应对策略5. 配置垃圾收集器6. CPU 占用过高 1. 常见的调优命令 ① jps:显示所有虚拟机进程; ② jstack:生成当前线程快照; ③ jmap:生成…

基于SSM的在线云音乐系统

末尾获取源码 开发语言:Java Java开发工具:JDK1.8 后端框架:SSM 前端:采用JSP技术开发 数据库:MySQL5.7和Navicat管理工具结合 服务器:Tomcat8.5 开发软件:IDEA / Eclipse 是否Maven项目&#x…

Linux内核分析与应用3-进程管理

本系列是对 陈莉君 老师 Linux 内核分析与应用[1] 的学习与记录。讲的非常之好,推荐观看 留此记录,蜻蜓点水,可作抛砖引玉 3.1 进程概述 一个程序通过编译器将其编译成汇编程序,经过汇编器将其汇编成目标代码,通过链接器形成可执行文件a.out或者elf格式,…

Kali2022.3虚拟机编译AOSP(从Kali安装到完成Aosp编译详细记录)

一.前言 测试的硬件环境(轻薄本):cpu:Amd r5 4600u,内存:16g,外接固态硬盘盒子。测试(下载和编译Android10)结果:下载时长为0.5-1h,编译时长接近5h;虚拟机环境:VMware Workstation …

Stream流用法详解

文章目录 🐒个人主页🏅JavaSE系列专栏📖前言:🎀什么是Stream流?🧸流的概念 🐕如何获取流🐕流的操作🏅中间操作(返回类型都是流)filter…

【strcat函数和strncat函数的对比与模拟实现】

strcat函数和strncat函数的对比与模拟实现 1.strcat函数的介绍 资源来源于cplusplus网站 它的作用是: 将源字符串的副本追加到目标字符串。目标中的结束空字符被源的第一个字符覆盖,并且在由目标中的两个字符串串联形成的新字符串的末尾包含一个空字符…

数据结构之单链表(c++(c语言)通用版)

我们创建一个长度为n的链表时,可以采取头插法创建或者尾插法创建,本篇博客我们采取头插法来创建,(作者只学了头插,尾插等以后来补qwq,补上喽)。 头插原理 我们先来画图来看看头插的创建形式把&#xff0c…

《python趣味工具》——酷炫二维码(2):批量定制合适的二维码

今天,我们将学习如何从Excel中提取相应的内容然后批量生成相应的二维码。 文章目录 一、Excel的基本操作:1. Excel的基本结构:2. 安装xlrd模块:3. 读取指定工作表:4. 读取指定内容:Tip:切片读取&#xff1a…

线性代数的学习和整理19,特征值,特征向量,以及引入的正交化矩阵概念(草稿)

目录 1 什么是特征值和特征向量? 1.1 特征值和特征向量这2个概念先放后 1.2 直观定义 1.3 严格定义 2 如何求特征值和特征向量 2.1 方法1:结合图形看,直观方法求 2.1.1 单位矩阵的特征值和特征向量 2.1.2 旋转矩阵 2.2 根据严格定义…

buuctf crypto 【RSA2】解题记录

1.打开文件 2.写脚本 3.16进制转字符串

Ardupilot — AP_OpticalFlow代码梳理

文章目录 前言 1 Copter.cpp 1.1 void Copter::setup() 2 system.cpp 2.1 void Copter::init_ardupilot() 3 sensors.cpp 3.1 void Copter::init_optflow() 3.2 对象optflow说明 4 OpticalFlow.cpp 4.1 void OpticalFlow::init(uint32_t log_bit) 5 AP_OpticalFlow_…

十三、函数式编程(1)

本章概要 新旧对比Lambda 表达式 递归 函数式编程语言操纵代码片段就像操作数据一样容易。 虽然 Java 不是函数式语言,但 Java 8 Lambda 表达式和方法引用 (Method References) 允许你以函数式编程。 在计算机时代早期,内存是稀缺和昂贵的。几乎每个人…

手写Spring:第20章-事务处理

文章目录 一、目标:事务处理二、设计:事务处理2.1 事务单元测试2.2 事务设计 三、实现:事务处理3.1 工程结构3.2 事务管理的核心类图3.3 定义事务注解3.3.1 定义事务注解3.3.2 定义事务接口3.3.3 默认事务定义实现类3.3.4 委托事务定义实现类…

Java 多线程系列Ⅵ(并发编程的六大组件)

JUC 组件 前言一、Callable二、ReentrantLock三、Atomic 原子类四、线程池五、Semaphore六、CountDownLatch 前言 JUC(Java.util.concurrent)是 Java 标准库中的一个包,它提供了一组并发编程工具,本篇文章就介绍几组常见的 JUC 组…

win10自带wifi共享功能

1、按下【wini】组合键打开windows设置,点击【网络和internet】; 2、按照下图,打开个移动热点,设置名称、密码。

Blender--》页面布局及基本操作讲解

接下来我会在three.js专栏中分享关于3D建模知识的文章,如果学习three朋友并且想了解和学习3D建模,欢迎关注本专栏,关于这款3D建模软件blender的安装,我在前面的文章已经讲解过了,如果不了解的朋友可以去考考古&#xf…

DeepinV20安装MSJDK17

装什么版本的JDK https://learn.microsoft.com/zh-cn/java/openjdk/download#openjdk-17 通常来讲,选择最适应自己应用程序的版本,例如最新开发的程序基本需要运行在jdk17了,又或者前几年的java程序基本都是jdk11,再旧一点的jdk8。尽可能选…