pyqt5设置背景图片

发布于:2023-09-14 ⋅ 阅读:(133) ⋅ 点赞:(0)

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、打开摄像头代码

# !/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、效果图

在这里插入图片描述

本文含有隐藏内容,请 开通VIP 后查看