当前位置: 首页 > news >正文

PyQt5组件之QLabel显示图像和视频

目录

一、显示图像和视频

1、显示图像 

2、显示视频

二、QtDesigner 窗口简单介绍

三、相关函数

1、打开本地图片

2、保存图片到本地

3、打开文件夹

4、打开本地文本文件并显示

5、保存文本到本地

6、关联函数

7、图片 “.png” | “.jpn” Label 自适应显示

8、QLabel常用方法


一、显示图像和视频

1、显示图像 

  • 按路径显示
from PyQt5 import QtWidgets, QtGui, QtCore
from PyQt5.QtCore import Qtapp = QtWidgets.QApplication([])
label = QtWidgets.QLabel()
label.setGeometry(QtCore.QRect(100, 180, 500, 500))pixmap = QtGui.QPixmap(r"Angry.png") # 创建相应的QPixmap对象
label.setPixmap(pixmap) # 显示图像
label.setAlignment(Qt.AlignCenter) # 图像居中label.show()
app.exec()
  • 显示numpy数组
from PyQt5 import QtWidgets, QtGui, QtCore
from PyQt5.QtCore import Qt
import numpy as npapp = QtWidgets.QApplication([])
label = QtWidgets.QLabel()
label.setGeometry(QtCore.QRect(100, 180, 500, 500))img = np.random.random((500,500,3))
height, width, depth = img.shape
# 关键代码
image = QtGui.QImage(img, width, height,  QtGui.QImage.Format_RGB888) # 如果没有depth*width,图像可能会扭曲
pixmap = QtGui.QPixmap(image) # 创建相应的QPixmap对象
label.setPixmap(pixmap) # 显示图像
label.setAlignment(Qt.AlignCenter) # 图像居中label.show()
app.exec()

2、显示视频

  • 按路径
from PyQt5 import QtWidgets, QtGui, QtCore
from PyQt5.QtCore import Qt
import cv2app = QtWidgets.QApplication([])
label = QtWidgets.QLabel()
label.setGeometry(QtCore.QRect(100, 180, 500, 500))video = cv2.VideoCapture(r"G:\00 讲解用\C3D\C3D\Pytorch_C3D_Feature_Extractor-master\data\miayuan\videos\1\1.mp4")
# 获取输入视频的宽度
width = int(video.get(cv2.CAP_PROP_FRAME_WIDTH))
# 获取输入视频的高度
height = int(video.get(cv2.CAP_PROP_FRAME_HEIGHT))
# 获取视频帧数
frame_number = int(video.get(cv2.CAP_PROP_FRAME_COUNT))
# 获取输入视频的帧率
frame_rate = int(video.get(cv2.CAP_PROP_FPS))ratio1 = width / 500 # (label 宽度)
ratio2 = height / 500 # (label 高度)
ratio = max(ratio1, ratio2)while video.isOpened():ret, frame = video.read()# 将图片转换为 Qt 格式# QImage:QImage(bytes,width,height,format)picture = QtGui.QImage(frame, width, height, 3 * width, QtGui.QImage.Format_RGB888)pixmap = QtGui.QPixmap.fromImage(picture)# 按照缩放比例自适应 label 显示pixmap.setDevicePixelRatio(ratio)label.setPixmap(pixmap)label.show()cv2.waitKey(10)video.release()  # 释放资源
app.exec()
  •  调用摄像头
from PyQt5 import QtWidgets, QtGui, QtCore
import cv2app = QtWidgets.QApplication([])
label = QtWidgets.QLabel()
label.setGeometry(QtCore.QRect(100, 180, 500, 500))# 更改改代码即可
video = cv2.VideoCapture(0)
# 获取输入视频的宽度
width = int(video.get(cv2.CAP_PROP_FRAME_WIDTH))
# 获取输入视频的高度
height = int(video.get(cv2.CAP_PROP_FRAME_HEIGHT))
# 获取视频帧数
frame_number = int(video.get(cv2.CAP_PROP_FRAME_COUNT))
# 获取输入视频的帧率
frame_rate = int(video.get(cv2.CAP_PROP_FPS))ratio1 = width / 500 # (label 宽度)
ratio2 = height / 500 # (label 高度)
ratio = max(ratio1, ratio2)while video.isOpened():ret, frame = video.read()# 将图片转换为 Qt 格式# QImage:QImage(bytes,width,height,format)picture = QtGui.QImage(frame, width, height, 3 * width, QtGui.QImage.Format_RGB888)pixmap = QtGui.QPixmap.fromImage(picture)# 按照缩放比例自适应 label 显示pixmap.setDevicePixelRatio(ratio)label.setPixmap(pixmap)label.show()cv2.waitKey(10)video.release()  # 释放资源
app.exec()

二、QtDesigner 窗口简单介绍

三、相关函数

1、打开本地图片

# 选择本地图片上传
def openImage(self):global imgNamepath  # 这里为了方便别的地方引用图片路径,将其设置为全局变量# 弹出一个文件选择框,第一个返回值imgName记录选中的文件路径+文件名,第二个返回值imgType记录文件的类型# QFileDialog就是系统对话框的那个类第一个参数是上下文,第二个参数是弹框的名字,第三个参数是默认打开的路径,第四个参数是需要的格式imgNamepath, imgType = QFileDialog.getOpenFileName(self.centralwidget, "选择图片","D:\\","*.jpg;;*.png;;All Files(*)")# 通过文件路径获取图片文件,并设置图片长宽为label控件的长、宽img = QtGui.QPixmap(imgNamepath).scaled(self.label_3.width(), self.label_3.height())# 在label控件上显示选择的图片self.label_3.setPixmap(img)# 显示所选图片的路径self.lineEdit_3.setText(imgNamepath)

2、保存图片到本地

  • (1)保存图片到本地的第一种方式:首先把图片所在label控件截图,然后打开一个保存文件的弹出框,最后保存截图到选中的路径。
def saveImage(self):screen = QApplication.primaryScreen()pix = screen.grabWindow(self.label_4.winId())fpath, ftype = QFileDialog.getSaveFileName(self.centralwidget, "保存图片", "d:\\", "*.jpg;;*.png;;All Files(*)")pix.save(fpath)
  • (2)保存图片到本地的第二种方式:首先提取相对应Qlabel中的图片,然后打开一个保存文件的弹出框,最后保存图片到选中的路径。
def saveImage(self):# 提取Qlabel中的图片img = self.label_4.pixmap().toImage()fpath, ftype = QFileDialog.getSaveFileName(self.centralwidget, "保存图片", "d:\\", "*.jpg;;*.png;;All Files(*)")img.save(fpath)

3、打开文件夹

# 打开文件夹(目录)
def openDirectory(self):fd = QFileDialog.getExistingDirectory(self.centralwidget, "选择文件夹", "")# 这里的label_directoryPath要根据项目替换成自己的组件self.label_directoryPath.setText(fd)   

4、打开本地文本文件并显示

# 选择文本文件上传def openTextFile(self):  # 选择文本文件上传fd, fp = QFileDialog.getOpenFileName(self.centralwidget, "选择文件", "d:\\", "*.txt;;All Files(*)")f = open(fd, 'r')self.label_txt.setText(f.read())self.label_filePath.setText(fd)f.close()

5、保存文本到本地

# 保存文本文件def saveTextFile(self):fd, fp = QFileDialog.getSaveFileName(self.centralwidget, "保存文件", "d:\\", "*.txt;;All Files(*)")f = open(fd, 'w')f.write(self.label_txt.text())f.close()

6、关联函数

# 按钮关联函数
self.pushButton_2.clicked.connect(self.openImage)
self.pushButton_3.clicked.connect(self.startAction)
self.pushButton_4.clicked.connect(self.saveImage)

7、图片 “.png” | “.jpn” Label 自适应显示


# filepath: 文件完整路径
pixmap = QPixmap(filepath)
ratio1 = pixmap.width() / 1920 (label 宽度)
ratio2 = pixmap.height() / 1080 (label 高度)
ration = max(ratio1, ratio2)
pixmap.setDevicePixelRatio(ration)
self.FileDisplay.setPixmap(pixmap)

8、QLabel常用方法

相关文章:

PyQt5组件之QLabel显示图像和视频

目录 一、显示图像和视频 1、显示图像 2、显示视频 二、QtDesigner 窗口简单介绍 三、相关函数 1、打开本地图片 2、保存图片到本地 3、打开文件夹 4、打开本地文本文件并显示 5、保存文本到本地 6、关联函数 7、图片 “.png” | “.jpn” Label 自适应显示 8、Q…...

微信程序 自定义遮罩层遮不住底部tabbar解决

一、先上效果 二 方法 1、自定义底部tabbar 实现: https://developers.weixin.qq.com/miniprogram/dev/framework/ability/custom-tabbar.html 官网去抄 简单写下:在代码根目录下添加入口文件 除了js 文件的list 需要调整 其他原封不动 代码&#xf…...

Python简易部署方法

一.安装Python解释器和vscode或者其他开发工具 下载地址: 1.下载vscode 链接: https://code.visualstudio.com/. 2.下载python解释器 链接: https://www.python.org/downloads/. 二.安装包 打开cmd,输入命令:pip install 包名 三.配置…...

Spring Boot单元测试与Mybatis单表增删改查

目录 1. Spring Boot单元测试 1.1 什么是单元测试? 1.2 单元测试有哪些好处? 1.3 Spring Boot 单元测试使用 单元测试的实现步骤 1. 生成单元测试类 2. 添加单元测试代码 简单的断言说明 2. Mybatis 单表增删改查 2.1 单表查询 2.2 参数占位符 ${} 和 #{} ${} 和 …...

机器学习样本数据划分的典型Python方法

机器学习样本数据划分的典型Python方法 DateAuthorVersionNote2023.08.16Dog TaoV1.0完成文档撰写。 文章目录 机器学习样本数据划分的典型Python方法样本数据的分类Training DataValidation DataTest Data numpy.ndarray类型数据直接划分交叉验证基于KFold基于RepeatedKFold基…...

重建与突破,探讨全链游戏的现在与未来

全链游戏(On-Chain Game)是指将游戏内资产通过虚拟货币或 NFT 形式记录上链的游戏类型。除此以外,游戏的状态存储、计算与执行等皆被部署在链上,目的是为用户打造沉浸式、全方位的游戏体验,超越传统游戏玩家被动控制的…...

[C++] 模板template

目录 1、函数模板 1.1 函数模板概念 1.2 函数模板格式 1.3 函数模板的原理 1.4 函数模板的实例化 1.4.1 隐式实例化 1.4.2 显式实例化 1.5 模板参数的匹配原则 2、类模板 2.1 类模板的定义格式 2.2 类模板的实例化 讲模板之前呢,我们先来谈谈泛型编程&am…...

[vite] 项目打包后页面空白,配置了base后也不生效

记录下解决问题的过程和思路 首先打开看打包后的 dist/index.html 文件,和页面上的报错 这里就发现了第一个问题 报错的意思是 index.html中引用的 css文件 和 js文件 找不到 为了解决这个问题,在vite.config.js配置中,增加一项 base:./ …...

springboot整合kafka-笔记

springboot整合kafka-笔记 配置pom.xml 这里我的springboot版本是2.3.8.RELEASE&#xff0c;使用的kafka-mq的版本是2.12 <dependencyManagement><dependencies><dependency><groupId>org.springframework.boot</groupId><artifactId>s…...

Rust软件外包开发语言的特点

Rust 是一种系统级编程语言&#xff0c;强调性能、安全性和并发性的编程语言&#xff0c;适用于广泛的应用领域&#xff0c;特别是那些需要高度可靠性和高性能的场景。下面和大家分享 Rust 语言的一些主要特点以及适用的场合&#xff0c;希望对大家有所帮助。北京木奇移动技术有…...

Spring Boot业务代码中使用@Transactional事务失效踩坑点总结

1.概述 接着之前我们对Spring AOP以及基于AOP实现事务控制的上文&#xff0c;今天我们来看看平时在项目业务开发中使用声明式事务Transactional的失效场景&#xff0c;并分析其失效原因&#xff0c;从而帮助开发人员尽量避免踩坑。 我们知道 Spring 声明式事务功能提供了极其…...

知识体系总结(九)设计原则、设计模式、分布式、高性能、高可用

文章目录 架构设计为什么要进行技术框架的设计 六大设计原则一、单一职责原则二、开闭原则三、依赖倒置原则四、接口分离原则五、迪米特法则&#xff08;又称最小知道原则&#xff09;六、里氏替换原则案例诠释 常见设计模式构造型单例模式工厂模式简单工厂工厂方法 生成器模式…...

Springboot 集成Beetl模板

一、在启动类下的pom.xml中导入依赖&#xff1a; <!--beetl模板引擎--><dependency><groupId>com.ibeetl</groupId><artifactId>beetl</artifactId><version>2.9.8</version></dependency> 二、 配置 beetl需要的Beetl…...

RabbitMQ查询队列使用情况和消费者详情实现

spring-boot-starter-amqp spring-boot-starter-amqp是Spring Boot框架中与AMQP(高级消息队列协议)相关的自动配置启动器。它提供了使用AMQP进行消息传递和异步通信的功能。 以下是spring-boot-starter-amqp的主要特性和功能: 自动配置:spring-boot-starter-amqp通过自动…...

Spark第二课RDD的详解

1.前言 RDD JAVA中的IO 1.小知识点穿插 1. 装饰者设计模式 装饰者设计模式:本身功能不变,扩展功能. 举例&#xff1a; 数据流的读取 一层一层的包装&#xff0c;进而将功能进行进一步的扩展 2.sleep和wait的区别 本质区别是字体不一样,sleep斜体,wait正常 斜体是静态方法…...

人工智能学习框架—飞桨Paddle人工智能

1.人工智能框架 机器学习的三要素&#xff1a;模型、学习策略、优化算法。 当我们用机器学习来解决一些模式识别任务时&#xff0c;一般的流程包含以下几个步骤&#xff1a; 1.1.浅层学习和深度学习 浅层学习(Shallow Learning)&#xff1a;不涉及特征学习&#xff0c;其特征…...

SElinux 导致 Keepalived 检测脚本无法执行

哈喽大家好&#xff0c;我是咸鱼 今天我们来看一个关于 Keepalived 检测脚本无法执行的问题 一位粉丝后台私信我&#xff0c;说他部署的 keepalived 集群 vrrp_script 模块中的脚本执行失败了&#xff0c;但是手动执行这个脚本却没有任何问题 这个问题也是咸鱼第一次遇到&…...

2022年电赛C题——小车跟随行驶系统——做题记录以及经验分享

前言 自己打算将做过的电赛真题&#xff0c;主要包含控制组的&#xff0c;近几年出现的小车控制题目&#xff0c;自己做过的真题以及在准备电赛期间刷真题出现的问题以及经验分享给大家 这次带来的是22年电赛C题——小车跟随行驶系统&#xff0c;这道题目指定使用的是TI的单片…...

vscode + python

序 参考链接&#xff1a; 【教程】VScode中配置Python运行环境_哔哩哔哩_bilibili Python部分 Python Releases for Windows | Python.org vscode部分 Visual Studio Code - Code Editing. Redefined 一路next&#xff0c;全部勾上&#xff1a; 就可以了&#xff1a; 安装插…...

badgerdb里面的事务

事务的ACID A 原子性&#xff08;Atomicity&#xff09; 多步骤操作&#xff0c;只能是两种状态&#xff0c;要么所有的步骤都成功执行&#xff0c;要么所有的步骤都不执行&#xff0c;举例说明就是小明向小红转账30元的场景&#xff0c;拆分成两个步骤&#xff0c;步骤1&#…...

大数据学习栈记——Neo4j的安装与使用

本文介绍图数据库Neofj的安装与使用&#xff0c;操作系统&#xff1a;Ubuntu24.04&#xff0c;Neofj版本&#xff1a;2025.04.0。 Apt安装 Neofj可以进行官网安装&#xff1a;Neo4j Deployment Center - Graph Database & Analytics 我这里安装是添加软件源的方法 最新版…...

系统设计 --- MongoDB亿级数据查询优化策略

系统设计 --- MongoDB亿级数据查询分表策略 背景Solution --- 分表 背景 使用audit log实现Audi Trail功能 Audit Trail范围: 六个月数据量: 每秒5-7条audi log&#xff0c;共计7千万 – 1亿条数据需要实现全文检索按照时间倒序因为license问题&#xff0c;不能使用ELK只能使用…...

spring:实例工厂方法获取bean

spring处理使用静态工厂方法获取bean实例&#xff0c;也可以通过实例工厂方法获取bean实例。 实例工厂方法步骤如下&#xff1a; 定义实例工厂类&#xff08;Java代码&#xff09;&#xff0c;定义实例工厂&#xff08;xml&#xff09;&#xff0c;定义调用实例工厂&#xff…...

Mac软件卸载指南,简单易懂!

刚和Adobe分手&#xff0c;它却总在Library里给你写"回忆录"&#xff1f;卸载的Final Cut Pro像电子幽灵般阴魂不散&#xff1f;总是会有残留文件&#xff0c;别慌&#xff01;这份Mac软件卸载指南&#xff0c;将用最硬核的方式教你"数字分手术"&#xff0…...

安全突围:重塑内生安全体系:齐向东在2025年BCS大会的演讲

文章目录 前言第一部分&#xff1a;体系力量是突围之钥第一重困境是体系思想落地不畅。第二重困境是大小体系融合瓶颈。第三重困境是“小体系”运营梗阻。 第二部分&#xff1a;体系矛盾是突围之障一是数据孤岛的障碍。二是投入不足的障碍。三是新旧兼容难的障碍。 第三部分&am…...

虚拟电厂发展三大趋势:市场化、技术主导、车网互联

市场化&#xff1a;从政策驱动到多元盈利 政策全面赋能 2025年4月&#xff0c;国家发改委、能源局发布《关于加快推进虚拟电厂发展的指导意见》&#xff0c;首次明确虚拟电厂为“独立市场主体”&#xff0c;提出硬性目标&#xff1a;2027年全国调节能力≥2000万千瓦&#xff0…...

Oracle11g安装包

Oracle 11g安装包 适用于windows系统&#xff0c;64位 下载路径 oracle 11g 安装包...

通过MicroSip配置自己的freeswitch服务器进行调试记录

之前用docker安装的freeswitch的&#xff0c;启动是正常的&#xff0c; 但用下面的Microsip连接不上 主要原因有可能一下几个 1、通过下面命令可以看 [rootlocalhost default]# docker exec -it freeswitch fs_cli -x "sofia status profile internal"Name …...

鸿蒙HarmonyOS 5军旗小游戏实现指南

1. 项目概述 本军旗小游戏基于鸿蒙HarmonyOS 5开发&#xff0c;采用DevEco Studio实现&#xff0c;包含完整的游戏逻辑和UI界面。 2. 项目结构 /src/main/java/com/example/militarychess/├── MainAbilitySlice.java // 主界面├── GameView.java // 游戏核…...

拟合问题处理

在机器学习中&#xff0c;核心任务通常围绕模型训练和性能提升展开&#xff0c;但你提到的 “优化训练数据解决过拟合” 和 “提升泛化性能解决欠拟合” 需要结合更准确的概念进行梳理。以下是对机器学习核心任务的系统复习和修正&#xff1a; 一、机器学习的核心任务框架 机…...