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.hqwc.cn/news/618779.html

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

相关文章

OLTP 与 OLAP 系统说明对比和大数据经典架构 Lambda 和 Kappa 说明对比——解读大数据架构(五)

文章目录 前言OLTP 和 OLAPSMP 和 MPPlambda 架构Kappa 架构 前言 本文我们将研究不同类型的大数据架构设计,将讨论 OLTP 和 OLAP 的系统设计,以及有效处理数据的策略包括 SMP 和 MPP 等概念。然后我们将了解经典的 Lambda 架构和 Kappa 架构。 OLTP …

【脚本】多功能Ubuntu临时授予用户sudo权限管理工具

转载请注明出处:小锋学长生活大爆炸[xfxuezhagn.cn] 设计原理和初衷可以看这里:【技巧】Ubuntu临时授予用户sudo权限,并在一定时间后自动撤销_ubuntu jianshao sudo-CSDN博客文章浏览阅读404次。非常实用_ubuntu jianshao sudohttps://blog.c…

【微信小程序——开发DAY4(黑马程序员课程)】

学习目标 自定义小程序组件自定义组件(1.)创建自定义组件文件夹(2.)引用自定义组件(3.)组件和页面的区别(4.)自定义组件的隔离性——自定义组件不影响小程序的样式——自定义组件也只…

【系统分析师】计算机网络

文章目录 1、TCP/IP协议族1.1 DHCP协议1.2 DNS协议1.3网络故障诊断 2、网路规划与设计2.1逻辑网络设计2.2物理网络设计2.3 分层设计 3、网络接入3.1 接入方式3.2 IPv6地址 4、综合布线技术5、物联网5.1物联网概念与分层5.2 物联网关键技术 6、云计算7、网络存储技术&#xff08…

特征工程(IV)--特征选择

特征工程 有这么一句话在业界广泛流传:数据和特征决定了机器学习的上限,而模型和算法只是逼近这个上限而已。由此可见,特征工程在机器学习中占有相当重要的地位。在实际应用当中,可以说特征工程是机器学习成功的关键。 特征工程是…

ssm051网上医院预约挂号系统+jsp

网上医院预约挂号系统设计与实现 摘 要 如今的信息时代,对信息的共享性,信息的流通性有着较高要求,因此传统管理方式就不适合。为了让医院预约挂号信息的管理模式进行升级,也为了更好的维护医院预约挂号信息,网上医院…

Echarts简单的多表联动效果和添加水印和按钮切换数据效果

多表联动 多表联动效果指的是在多个表格之间建立一种交互关系,以便它们之间的操作或选择能够相互影响。通常情况下,多表联动效果可以通过以下方式之一实现: 数据关联: 当在一个表格中选择或操作某些数据时,另一个表格…

matlab学习(三)(4.9-4.15)

一、空域里LSB算法的原理 1.原理: LSB算法通过替换图像像素的最低位来嵌入信息。这些被替换的LSB序列可以是需要加入的水印信息、水印的数字摘要或者由水印生成的伪随机序列。 2.实现步骤: (1)将图像文件中的所有像素点以RGB形…

域权限维持—黄金票据和白金票据

黄金票据和白金票据 前言 某老哥的一次面试里问到了这个问题,故来做一番了解 该攻击方式在BlackHat 2014被提出,演讲者为Alva Duckwall & Benjamin Delpy(gentilkiwi)进行了演示,该演讲提出了Kerberos协议实现过程中的设计…

【5G PHY】5G无线链路监测原理简述

博主未授权任何人或组织机构转载博主任何原创文章,感谢各位对原创的支持! 博主链接 本人就职于国际知名终端厂商,负责modem芯片研发。 在5G早期负责终端数据业务层、核心网相关的开发工作,目前牵头6G算力网络技术标准研究。 博客…

bugku-web-文件包含2

页面源码 <!-- upload.php --><!doctype html><html><head><meta charset"utf-8"/><meta http-equiv"X-UA-Compatible" content"IEedge"><meta name"viewport" content"widthdevice-widt…

精品方案- 智慧养殖业IOT项目技术建议书(免费下载)

本项目建设从实际需求出发&#xff0c;利用物联网信息化手段进行畜牧业经济运行监测&#xff0c;掌握畜牧业生产与畜牧业经济运行的动态&#xff0c;监测畜牧业生产经营的成本收益变化&#xff0c;对畜牧业生产经营活动提供分析。提高畜牧业市场监管的电子化、网络化水平&#…