在这里插入图片描述
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_())