pyqt和opencv结合01:读取图像、显示

在这里插入图片描述
在这里插入图片描述

1 、opencv读取图像用于pyqt显示

# image = cv2.imread(file_path)image = cv2.cvtColor(image, cv2.COLOR_BGR2RGB)# 将图像转换为 Qt 可接受的格式height, width, channel = image.shapebytes_per_line = 3 * widthq_image = QImage(image.data, width, height, bytes_per_line, QImage.Format_RGB888)pixmap = QPixmap.fromImage(q_image)self.image_label.setPixmap(pixmap)self.image_label.setScaledContents(True)

2、 opencv读取不了中文路径报错解决方式

def read_chinese(file):image_numpy_data = cv2.imdecode(np.fromfile(file, dtype=np.uint8), -1)#返回numpy的ndarrayreturn image_numpy_data

3 、pyqt中label默认不显示如何设置成显示

self.image_label.setStyleSheet("border: 5px solid red;")

4、pyqt中label默认文字位于左侧如何设置成居中显示

from PyQt5.QtCore import Qt
self.image_label.setAlignment(Qt.AlignCenter)

5、pyqt中label默认显示图像大小会裁剪如何设置成自适应

    self.image_label.setScaledContents(True)

6、pyqt中打开文件对话框选择文件

file_path, _ = QFileDialog.getOpenFileName(self, "Open Image File", "", "Image files (*.jpg *.png)")

以下是完整的代码:

import sys
from PyQt5.QtWidgets import QApplication, QMainWindow, QLabel, QPushButton, QVBoxLayout, QWidget, QFileDialog
from PyQt5.QtGui import QPixmap, QImage
import cv2
import numpy as npfrom PyQt5.QtCore import Qtdef read_chinese(file):image_numpy_data = cv2.imdecode(np.fromfile(file, dtype=np.uint8), -1)#返回numpy的ndarrayreturn image_numpy_dataclass ImageReaderApp(QMainWindow):def __init__(self):super().__init__()self.setWindowTitle("Image Reader")self.setGeometry(100, 100, 400, 300)self.setMinimumSize(400, 300)  # 设置最小尺寸self.central_widget = QWidget()self.setCentralWidget(self.central_widget)self.layout = QVBoxLayout()self.central_widget.setLayout(self.layout)self.image_label = QLabel()self.image_label.setText("图片展示区")self.image_label.setAlignment(Qt.AlignCenter)self.image_label.setStyleSheet("border: 5px solid red;")self.layout.addWidget(self.image_label)self.select_button = QPushButton("Select Image")self.select_button.clicked.connect(self.select_image)self.layout.addWidget(self.select_button)def select_image(self):file_path, _ = QFileDialog.getOpenFileName(self, "Open Image File", "", "Image files (*.jpg *.png)")if file_path:# 使用 OpenCV 读取图像FD# image = cv2.imread(file_path)# 将图像从 BGR 格式转换为 RGB 格式image = read_chinese(file_path)image = cv2.cvtColor(image, cv2.COLOR_BGR2RGB)# 将图像转换为 Qt 可接受的格式height, width, channel = image.shapebytes_per_line = 3 * widthq_image = QImage(image.data, width, height, bytes_per_line, QImage.Format_RGB888)pixmap = QPixmap.fromImage(q_image)self.image_label.setPixmap(pixmap)self.image_label.setScaledContents(True)if __name__ == "__main__":app = QApplication(sys.argv)window = ImageReaderApp()window.show()sys.exit(app.exec_())

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/816646.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Tomcat源码解析——Tomcat的启动流程

一、启动脚本 当我们在服务启动Tomcat时,都是通过执行startup.sh脚本启动。 在Tomcat的启动脚本startup.sh中,最终会去执行catalina.sh脚本,传递的参数是start。 在catalina.sh脚本中,前面是环境判断和初始化参数,最终…

MES生产管理系统:私有云、公有云与本地化部署的比较分析

随着信息技术的迅猛发展,云计算作为一种新兴的技术服务模式,已经深入渗透到企业的日常运营中。在众多部署方式中,私有云、公有云和本地化部署是三种最为常见的选择。它们各自具有独特的特点和适用场景,并在不同程度上影响着企业的…

kafka---broker相关配置

一、Broker 相关配置 1、一般配置 broker.id 当前kafka服务的sid(server id),在kafka集群中,该值是唯一的(unique),如果未设置此值,kafka会自动生成一个int值;为了防止自动生成的值与用户设置…

.net框架和c#程序设计第三次测试

目录 一、测试要求 二、实现效果 三、实现代码 一、测试要求 二、实现效果 数据库中的内容&#xff1a; 使用数据库中的账号登录&#xff1a; 若不是数据库中的内容&#xff1a; 三、实现代码 login.aspx文件&#xff1a; <% Page Language"C#" AutoEventW…

MybatisX的使用

MyBatisX 是一个基于 IntelliJ IDEA 平台的 MyBatis 开发插件&#xff0c;它提供了一系列的功能来简化 MyBatis 开发过程&#xff0c;包括 SQL 代码自动补全、SQL 语句格式化、Mapper 接口和 XML 配置的跳转等。让我为你详细介绍一下 MyBatisX 插件的使用方法&#xff1a; 1. …

8:系统开发基础--8.5:系统设计、8.6:系统测试 、8.7:软件维护 、8.8:软件质量保证、8.9:软件文档

转上一节&#xff1a; http://t.csdnimg.cn/X0GjWhttp://t.csdnimg.cn/X0GjW 8.5&#xff1a;系统设计 考点1&#xff1a;系统设计概述 1&#xff1a;软件设计的任务与活动 体系结构设计&#xff1a;定义软件系统各主要部件之间的关系。 数据设计&#xff1a;基于E-R图确定…

yolov7直接调用zed相机实现三维测距(python)

yolov7直接调用zed相机实现三维测距(python) 1. 相关配置2. 相关代码3. 源码下载相关链接 此项目直接调用zed相机实现三维测距,无需标定,相关内容如下: 1. yolov4直接调用zed相机实现三维测距 2.yolov5直接调用zed相机实现三维测距(python) 3. yolov8直接调用zed相机实…

OpenHarmony实战开发-异步并发概述 (Promise和async/await)。

Promise和async/await提供异步并发能力&#xff0c;是标准的JS异步语法。异步代码会被挂起并在之后继续执行&#xff0c;同一时间只有一段代码执行&#xff0c;适用于单次I/O任务的场景开发&#xff0c;例如一次网络请求、一次文件读写等操作。 异步语法是一种编程语言的特性&…

MongoDB聚合运算符:$rand

MongoDB聚合运算符&#xff1a;$rand 文章目录 MongoDB聚合运算符&#xff1a;$rand语法举例生成随机数据点从集合中随机选择条目 $rand聚合运算符用于返回一个0~1之间的随机浮点数。 语法 { $rand: {} }$rand运算符不需要任何参数。每次调用$rand都会返回一个小数点后最多17位…

java面向对象.day21(继承02--super)

说明 super父 this当前 使用super时&#xff0c;首先要继承父类&#xff0c;其次是在子类里面才能使用super。 继承父类后&#xff0c;运行子类时会同时调用父类的构造方法&#xff0c;如果要显性调用父类的构造方法必须在子类的第一行调用。 单使用super()表示调用父类构造…

探索设计模式的魅力:深度挖掘响应式模式的潜力,从而精准优化AI与机器学习项目的运行效能,引领技术革新潮流

​&#x1f308; 个人主页&#xff1a;danci_ &#x1f525; 系列专栏&#xff1a;《设计模式》 &#x1f4aa;&#x1f3fb; 制定明确可量化的目标&#xff0c;坚持默默的做事。 挖掘响应式模式&#xff0c;优化AI与机器学习项目性能&#xff0c;引领技术新潮流 ✨机器学习界的…

Linux useradd命令教程:如何创建新的用户账户(附实例详解和注意事项)

Linux useradd命令介绍 useradd是Linux中用于添加用户账户的命令。它可以用于创建新的用户&#xff0c;并可以配合不同的选项来指定用户的主目录、UID、GID、组等信息。 Linux useradd命令适用的Linux版本 useradd命令在大多数Linux发行版中都可以使用&#xff0c;包括但不限…

贪心算法中常见的使用方法逻辑整理

贪心算法 常见的使用方法逻辑整理 1. 贪心算法 特点 贪心算法&#xff0c;又名贪婪法&#xff0c;是寻找最优解问题的常用方法&#xff0c;这种方法模式一般将求解过程分成若干个步骤&#xff0c;但每个步骤都应用 贪心原则 &#xff0c;选取当前状态下最好/最优的选择&#x…

快速上手Vue

目录 概念 创建实例 插值表达式 Vue响应式特性 概念 Vue是一个用于 构建用户界面 的 渐进式 框架 构建用户界面&#xff1a;基于数据渲染出用户看到的页面 渐进式&#xff1a;Vue相关生态&#xff1a;声明式渲染<组件系统<客户端路由<大规模状态管理<构建工具 V…

第十二讲 查询计划 优化

到目前为止&#xff0c;我们一直在说&#xff0c;我们得到一个 SQL 查询&#xff0c;我们希望可以解析它&#xff0c;将其转化为某种逻辑计划&#xff0c;然后生成我们可以用于执行的物理计划。而这正是查询优化器【Optimizer】的功能&#xff0c;对于给定的 SQL &#xff0c;优…

人类的智能跟人的物理存在可以分割

人类的智能和物理存在是可以分割的。人类的智能指的是人类的思维能力、认知能力、学习能力等与大脑相关的智慧。而人的物理存在指的是人的身体、器官、神经系统等与肉体相关的部分。虽然智能和物理存在紧密相连&#xff0c;但是它们是可以单独考虑和研究的。比如&#xff0c;人…

Ubuntu Desktop 免费的文件 / 目录差异比较工具 (Beyond Compare 为收费软件)

Ubuntu Desktop 免费的文件 / 目录差异比较工具 [Beyond Compare 为收费软件] 1. Installation2. Meld Diff Viewer3. Lock to LauncherReferences Meld - Visual diff and merge tool https://meldmerge.org/ Meld helps you compare files, directories, and version contro…

【MATLAB源码-第50期】基于simulink的BPSK调制解调仿真,输出误码率。

操作环境&#xff1a; MATLAB 2022a 1、算法描述 1. Bernoulli Binary: 这个模块生成伯努利二进制随机数&#xff0c;即0或1。这些数字表示要传输的原始数字信息。 2. Unipolar to Bipolar Converter: 此模块将伯努利二进制数据从0和1转换为-1和1&#xff0c;这是BPSK调制的…

C语言之offsetof实现分析(九十一)

简介&#xff1a; CSDN博客专家&#xff0c;专注Android/Linux系统&#xff0c;分享多mic语音方案、音视频、编解码等技术&#xff0c;与大家一起成长&#xff01; 优质专栏&#xff1a;Audio工程师进阶系列【原创干货持续更新中……】&#x1f680; 优质专栏&#xff1a;多媒…

基于Springboot+Vue的Java项目-高校心理教育辅导系统开发实战(附演示视频+源码+LW)

大家好&#xff01;我是程序员一帆&#xff0c;感谢您阅读本文&#xff0c;欢迎一键三连哦。 &#x1f49e;当前专栏&#xff1a;Java毕业设计 精彩专栏推荐&#x1f447;&#x1f3fb;&#x1f447;&#x1f3fb;&#x1f447;&#x1f3fb; &#x1f380; Python毕业设计 &am…