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

相关推荐
你不是我我4 小时前
【Java 开发日记】HTTP3 性能更好,为什么内网微服务依然多用 HTTP2?HTTP2 内网优势是什么?
java·开发语言·微服务
tjl521314_214 小时前
04C++ 名称空间(Namespace)
开发语言·c++
赏金术士4 小时前
Kotlin 数据流与单双向绑定
android·开发语言·kotlin
逻辑驱动的ken5 小时前
Java高频面试场景题25
java·开发语言·深度学习·面试·职场和发展
AI人工智能+电脑小能手6 小时前
【大白话说Java面试题】【Java基础篇】第32题:Java的异常处理机制是什么
java·开发语言·后端·面试
無限進步D8 小时前
Java 面向对象高级 接口
java·开发语言
两年半的个人练习生^_^9 小时前
Java日志框架和使用、日志记录规范
java·开发语言·开发规范
杨凯凡10 小时前
【032】排查入门:jstack、heap dump、Arthas 初识
java·开发语言·后端
其实防守也摸鱼10 小时前
无线网络安全--实验 规避WLAN验证之发现隐藏的SSID
java·开发语言·网络·安全·web安全·智能路由器·无线网络安全
l1t10 小时前
astral-sh发布的musl和gnu版本standalone python 性能比较
开发语言·python