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

server/2024/10/18 18:23:36/

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

opencvpyqt_6">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)

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

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

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

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

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

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

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

    self.image_label.setScaledContents(True)

pyqt_47">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.ppmy.cn/server/2467.html

相关文章

第七章相关内容

第七章相关内容 计算机网络基础知识 这一章在软件测评师中其实是比较重要的一个章节,同时呢,考题的比重也是比较大的,这一个章节的覆盖面其实还是比较广的,设计到了网络的很多方面,也涉及到了一些基于网络的应用&…

现代商业中首席人工智能官(CAIO)的角色与影响

每周跟踪AI热点新闻动向和震撼发展 想要探索生成式人工智能的前沿进展吗?订阅我们的简报,深入解析最新的技术突破、实际应用案例和未来的趋势。与全球数同行一同,从行业内部的深度分析和实用指南中受益。不要错过这个机会,成为AI领…

Java专业技能收集

可以去企业的照片要求里面收集专业技能 熟练掌握计算机网络、数据结构、操作系统,了解计算机组成原理,具备良好的编码能力。熟练掌握 Java 语法,集合、反射、多线程等基础框架,熟练应用常用的设计模式。熟悉 JVM、JMM&#xff0c…

iOS分类和扩展的区别

分类:在不改变原有类的基础上&#xff0c;为原有类添加方法。不可定义属性&#xff0c;只能定义getter和setter方法。 作用&#xff1a;一般用来为系统的类扩展方法或者把某个复杂的类的按照功能拆到不同的文件里。 NSStringPhoneNumber.h #import <Foundation/Foundation…

基于Python网络招聘数据可视化分析系统的设计与实现

基于Python网络招聘数据可视化分析系统的设计与实现 Design and Implementation of Python-based Network Recruitment Data Visualization Analysis System 完整下载链接:基于Python网络招聘数据可视化分析系统的设计与实现 文章目录 基于Python网络招聘数据可视化分析系统的…

STM32学习和实践笔记(15):STM32中断系统

中断概念 CPU执行程序时&#xff0c;由于发生了某种随机的事件(外部或内部)&#xff0c;引起CPU暂 时中断正在运行的程序&#xff0c;转去执行一段特殊的服务程序(中断服务子程序 或中断处理程序)&#xff0c;以处理该事件&#xff0c;该事件处理完后又返回被中断的程序 继…

五种主流数据库:集合运算

关系型数据库中的表与集合理论中的集合类似&#xff0c;表是由行&#xff08;记录&#xff09;组成的集合。因此&#xff0c;SQL 支持基于数据行的各种集合运算&#xff0c;包括并集运算&#xff08;Union&#xff09;、交集运算&#xff08;Intersect&#xff09;和差集运算&a…

C++类和动态内存分配

类的动态内存分配和释放 C能够在程序运行时决定内存的分配&#xff0c;而不是只在编译阶段&#xff0c;因此&#xff0c;就可以根据程序的需要&#xff0c;而不是根据一系列严格的存储类型规则来使用内存&#xff0c;C使用new和delete运算符来动态控制内存&#xff0c;但是&am…