pyqt5设置背景图片

PyQt5设置背景图片

1、打开QTDesigner

创建一个UI,camera.ui

2、创建一个pictures.qrc文件

在ui文件同级目录下先创建一个pictures.txt,填写内容:

复制代码
<RCC>
  <qresource prefix="media">
    <file>1.jpg</file>
  </qresource>
</RCC>

如图:

3、添加背景图片

3.1、选择label控件

并命名为label_video

3.2、选中label,右键->改变样式表->添加资源->background-image

3.3、添加pictures.qrc

3.4、添加前缀

3.5、添加背景图

3.6、保存

4、转py文件

4.1、把UI转成py文件

4.2、把qrc转py文件

4.3、项目目录

5、打开摄像头代码

python 复制代码
# !/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_())

6、效果图

相关推荐
Vincent_Vang3 分钟前
多态 、抽象类、抽象类和具体类的区别、抽象方法和具体方法的区别 以及 重载和重写的相同和不同之处
java·开发语言·前端·ide
qualifying4 分钟前
JavaEE——多线程(3)
java·开发语言·java-ee
Fate_I_C6 分钟前
Kotlin 中的 suspend(挂起函数)
android·开发语言·kotlin
周亚鑫8 分钟前
vue3 js代码混淆
开发语言·javascript·ecmascript
陳103014 分钟前
C++:vector(1)
开发语言·c++
棉晗榜15 分钟前
WPF将程序集里面嵌入的资源文件下载到本机磁盘中,将项目中的文件下载到桌面
开发语言·wpf
人道领域22 分钟前
【零基础学java】(Map集合)
java·开发语言
杀死那个蝈坦23 分钟前
JUC并发编程day1
java·开发语言
lly20240623 分钟前
SQLite Alter 命令详解
开发语言
沃斯堡&蓝鸟24 分钟前
DAY33 类的装饰器
开发语言·python