基于pyqt5的简易目标检测UI

没选图像的时候:

被否决的一个系统,也不过多介绍了,留个记录吧,之后可以看看优化一下,也不白写代码。
代码:

from ultralytics import YOLO

from PyQt5.QtWidgets import QApplication, QMainWindow, QFileDialog, QLabel, QPushButton, QHBoxLayout,QVBoxLayout, QWidget
from PyQt5.QtGui import QPixmap,QImage
import sys
import cv2

class MainWindow(QMainWindow):
    def __init__(self):
        super().__init__()
        # 创建一个QWidget,作为主窗口的中心部件
        widget = QWidget(self)
        self.setCentralWidget(widget)

        # 创建一个水平布局,添加到中心部件
        layout = QHBoxLayout()
        widget.setLayout(layout)

        # 创建一个垂直布局,添加到水平布局
        layout_left = QVBoxLayout()
        layout.addLayout(layout_left)

        # 创建一个QLabel,用于显示原始图片
        self.label_original = QLabel(self)
        layout_left.addWidget(self.label_original)

        # 创建一个QPushButton,用于选择图片
        self.button_open = QPushButton("Open", self)
        self.button_open.clicked.connect(self.open_file)
        layout_left.addWidget(self.button_open)

        # 创建另一个垂直布局,添加到水平布局
        layout_right = QVBoxLayout()
        layout.addLayout(layout_right)

        # 创建一个QLabel,用于显示处理后的图片
        self.label_processed = QLabel(self)
        layout_right.addWidget(self.label_processed)

        # 创建一个QPushButton,用于处理图片
        self.button_process = QPushButton("Process", self)
        self.button_process.clicked.connect(self.process_image)
        layout_right.addWidget(self.button_process)

        self.model= YOLO('best.pt')

    def open_file(self):
        # 打开文件对话框,选择图片
        file_name, _ = QFileDialog.getOpenFileName(self, "Open Image", "", "Images (*.png *.xpm *.jpg)")

        # 如果选择了图片,则显示
        if file_name:
            pixmap = QPixmap(file_name)
            # 调整QLabel的尺寸为图片的尺寸
            self.label_original.resize(pixmap.width(), pixmap.height())
            self.label_original.setPixmap(pixmap)

        self.src=file_name

    def process_image(self):
        results = self.model(self.src)
        annotated_frame = results[0].plot()
        
        img_rgb = cv2.cvtColor(annotated_frame, cv2.COLOR_BGR2RGB)
        qimg = QImage(img_rgb.data, img_rgb.shape[1], img_rgb.shape[0], QImage.Format_RGB888)
        pixmap = QPixmap.fromImage(qimg)

        self.label_processed.setPixmap(pixmap)


if __name__ == "__main__":
    app = QApplication(sys.argv)
    window = MainWindow()
    window.show()
    sys.exit(app.exec_())
posted @ 2023-08-16 18:47  aondw  阅读(94)  评论(0编辑  收藏  举报