这段代码是一个使用PyQt5和OpenCV实现的简单图像查看器。它创建了一个名为MainWindow的类,继承自QMainWindow。在初始化函数中,设置了窗口标题、大小,并添加了一个按钮用于打开图片。同时,还创建了两个文本编辑框用于显示分数和详细信息,以及一个标签用于显示图片。 按钮的点击事件连接到open_image函数,该函数使用QFileDialog选择一张图片文件,然后使用OpenCV读取图片数据。如果成功读取到图片数据,将其转换为QImage格式,并将其设置为标签的像素映射。 最后,在主函数中创建了一个QApplication实例和一个MainWindow实例,并显示窗口。程序运行后,用户可以通过点击按钮来打开并查看图片。
这个窗口的进一步作用是进行深度学习图像分类的结果展示窗口
import sys
from PyQt5.QtWidgets import QApplication, QMainWindow, QPushButton, QFileDialog, QLabel, QWidget, QGridLayout
from PyQt5.QtGui import QPixmap, QImage
import PyQt5.QtWidgets as wid
from PyQt5.QtCore import Qt
import cv2
class MainWindow(QMainWindow):
def __init__(self):
super().__init__()
self.setWindowTitle("OpenCV Image Viewer")
self.resize(640, 500)
self.button = QPushButton("打开图片", self)
#self.button.setGeometry(10, 10, 30, 10)
self.button.clicked.connect(self.open_image)
self.textScore = wid.QTextEdit("", self)
self.textDetail = wid.QTextEdit("", self)
self.button.setFixedHeight(50)
self.button.setFixedWidth(70)
self.textScore.setFixedHeight(50)
self.textDetail.setFixedHeight(50)
self.label = QLabel(self)
self.label.setFixedSize(640, 480)
self.label.setStyleSheet("border: 2px solid black; border-radius: 5px;")
self.label.setAlignment(Qt.AlignmentFlag.AlignLeft | Qt.AlignmentFlag.AlignTop)
layout = QGridLayout()
layout.addWidget(self.button, 0, 0, 1, 1)
layout.addWidget(self.textScore, 0, 1, 1, 2)
layout.addWidget(self.textDetail, 0, 3, 1, 2)
layout.addWidget(self.label, 1, 0, 1, 5)
central_widget = QWidget()
central_widget.setLayout(layout)
self.setCentralWidget(central_widget)
def open_image(self):
options = QFileDialog.Options()
options |= QFileDialog.ReadOnly
file_name, _ = QFileDialog.getOpenFileName(self, "选择图片", "", "Images (*.png *.xpm *.jpg *.bmp);;All Files (*)", options=options)
if file_name:
img = cv2.imread(file_name)
if img is not None:
height, width, channel = img.shape
bytesPerLine = 3 * width
qImg = QImage(img.data, width, height, bytesPerLine, QImage.Format_RGB888).rgbSwapped()
self.label.setPixmap(QPixmap.fromImage(qImg))
if __name__ == "__main__":
app = QApplication(sys.argv)
window = MainWindow()
window.show()
sys.exit(app.exec_())
这段代码是使用Python和PyQt5库编写的一个简单的图像查看器程序。它的主要功能是让用户可以通过点击按钮来打开并显示一张图片。
首先,我们导入了所需的库和模块,包括sys、PyQt5.QtWidgets、PyQt5.QtGui、cv2等。然后,我们定义了一个名为MainWindow的类,它继承自QMainWindow类。在这个类的构造函数中,我们设置了窗口的标题、大小,并创建了一个按钮、两个文本框和一个标签。按钮用于打开图片,文本框用于显示图片的详细信息,标签用于显示图片本身。
接下来,我们定义了一个名为open_image的方法,当用户点击按钮时,这个方法会被调用。在这个方法中,我们首先弹出一个文件对话框,让用户选择要打开的图片。然后,我们使用cv2库读取选中的图片,并将其转换为QImage对象。最后,我们将这个QImage对象设置为标签的pixmap,从而在窗口中显示图片。
最后,在主函数中,我们创建了一个QApplication对象和一个MainWindow对象,并显示了这个窗口。这样,当我们运行这个程序时,就可以看到一个包含“打开图片”按钮的窗口,通过点击这个按钮,可以选择并显示一张图片。