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

相关推荐
天外飞雨道沧桑10 分钟前
我在浏览器里练了一个 792 参数的大模型,它学会了补全 JavaScript
开发语言·javascript·ai·ecmascript·ai编程
hhhjhl14 分钟前
Yup 跨端三方库仓颉适配全流程
java·开发语言
运维行者_26 分钟前
网络监控工具怎么选?从设备监控到智能运维的能力清单
运维·服务器·开发语言·网络·人工智能·支持向量机·php
“AI国潮设计-小江”1 小时前
【AIGC实战】Python+SDXL打造“潮汕英歌舞IP”万能立牌插件,批量生成“发财元宝蛋糕”视觉营销方案(附源码)
开发语言·人工智能·python·prompt·aigc
lhbweilai2 小时前
分析FreeRTOS内核对象API的源码实现(八)
c语言·开发语言·stm32·单片机
努力努力再努力wz2 小时前
【C++高阶系列】C++20 协程底层原理:函数为什么能暂停?从状态机到 Task,彻底串起挂起、恢复与协程调度
开发语言·c++·c++20·1024程序员节
咩咩啃树皮2 小时前
JavaScript 中 this 指向为什么总在变?
开发语言·前端·javascript
程序员清风2 小时前
算法题中的边界条件、测试与调试
开发语言·算法·kotlin
砚底藏山河2 小时前
python量化实操:冷热分层存储
java·开发语言·python·金融
十五年专注C++开发2 小时前
pybind11:一个跨C++和Python平台的编程库
开发语言·c++·python·pybind11