yolov8可视化界面,基于pyqt5,兼容官方源码,可打包成软件

本文介绍了一个使用Ultralytics库进行对象检测的Python应用,通过PyQt5构建了一个简单的用户界面,包括模型选择、图片检测功能以及错误处理。开发者提供了加载模型和图片检测的详细代码片段,适合初学者学习和实践图像处理技术。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.确保Ultralytics源码无误且环境正常配置

环境异常请先查看这篇博客

深度学习目标检测:yolov8(Ultralytics)环境配置,适合0基础小白,超详细-优快云博客文章浏览阅读1.8w次,点赞103次,收藏351次。深度学习目标检测yolov8小白教程环境搭建,超级简单的教程,纯新手方便理解,一看就会。_ultralytics https://blog.youkuaiyun.com/qq_67105081/article/details/137519207?spm=1001.2014.3001.5501

建议使用Anaconda3+pycharm,源码下载,源代码文件获取点击下面的链接。

https://github.com/ultralytics/ultralyticshttps://github.com/ultralytics/ultralytics

需要完整的功能齐全的Ultralytics(YOLOv8/YOLOv11通用)可视化检测界面在公众号获取。

2.界面实现

2.1 相关库

pip install PyQt5

2.2 导入包

我这里导入的是以下这些,同官方源码兼容

import sys
from PyQt5.QtCore import Qt
from PyQt5.QtWidgets import QApplication, QMainWindow, QLabel, QVBoxLayout, QWidget, QPushButton, QHBoxLayout, QMessageBox, QFileDialog
from PyQt5.QtGui import QImage, QPixmap
import cv2
from ultralytics import YOLO

2.3 功能实现

这里只实现了简单的权重选择和图片检测功能并添加了对应的按钮

# 添加模型选择按钮
self.load_model_button = QPushButton("模型选择")
self.load_model_button.clicked.connect(self.load_model)
hbox_buttons.addWidget(self.load_model_button)

# 添加图片检测按钮
self.image_detect_button = QPushButton("图片检测")
self.image_detect_button.clicked.connect(self.detect_image)
hbox_buttons.addWidget(self.image_detect_button)

# 添加退出按钮
self.exit_button = QPushButton("退出")
self.exit_button.clicked.connect(self.exit_application)
hbox_buttons.addWidget(self.exit_button)

#加载模型文件
def load_model(self):
    model_path, _ = QFileDialog.getOpenFileName(None, "选择模型文件", "", "模型文件 (*.pt)")
    if model_path:
        self.model = YOLO(model_path)
        if self.model:
            return True
        else:
            return False
#加载待检测图片文件
def detect_image(self):
    image_path, _ = QFileDialog.getOpenFileName(None, "选择图片文件", "", "图片文件 (*.jpg *.jpeg *.png)")
    if image_path:
        results = self.worker.detect_image(image_path)
        if results:
            annotated_image = results[0].plot()
            height, width, channel = annotated_image.shape
            bytesPerLine = 3 * width
            qimage = QImage(annotated_image.data, width, height, bytesPerLine, QImage.Format_BGR888)
            pixmap = QPixmap.fromImage(qimage)
            self.label.setPixmap(pixmap.scaled(self.label.size(), Qt.KeepAspectRatio))
    else:
        QMessageBox.critical(self, "错误", "请选择图片文件")

def exit_application(self):
   # 终止程序运行
   sys.exit()

模型加载前图片是不允许被检测的,所以把按钮先禁用,等模型加载后再启用

self.image_detect_button.setEnabled(False)

def load_model(self):
    if self.worker.load_model():
        self.image_detect_button.setEnabled(True)

2.4 界面展示

这样一个简单的ui界面就写好了

2.5 完整代码

完整代码附上,其他需求可以私聊,遇到报错可以评论交流~

import sys
from PyQt5.QtCore import Qt
from PyQt5.QtWidgets import QApplication, QMainWindow, QLabel, QVBoxLayout, QWidget, QPushButton, QHBoxLayout, QMessageBox, QFileDialog
from PyQt5.QtGui import QImage, QPixmap
import cv2
from ultralytics import YOLO

class Worker:
    def __init__(self):
        self.model = None

    def load_model(self):
        model_path, _ = QFileDialog.getOpenFileName(None, "选择模型文件", "", "模型文件 (*.pt)")
        if model_path:
            self.model = YOLO(model_path)
            if self.model:
                return True
            else:
                return False

    def detect_image(self, image_path):
        image = cv2.imread(image_path)
        if image is not None:
            results = self.model.predict(image)
            return results
        else:
            return None

class MainWindow(QMainWindow):
    def __init__(self):
        super().__init__()
        self.setWindowTitle("@author:笑脸惹桃花")
        self.setGeometry(100, 100, 800, 600)

        self.label = QLabel()
        self.label.setAlignment(Qt.AlignCenter)

        layout = QVBoxLayout()
        layout.addWidget(self.label)

        central_widget = QWidget()
        central_widget.setLayout(layout)
        self.setCentralWidget(central_widget)

        self.worker = Worker()

        # 创建按钮布局
        hbox_buttons = QHBoxLayout()
        layout.addLayout(hbox_buttons)

        # 添加模型选择按钮
        self.load_model_button = QPushButton("模型选择")
        self.load_model_button.clicked.connect(self.load_model)
        hbox_buttons.addWidget(self.load_model_button)

        # 添加图片检测按钮
        self.image_detect_button = QPushButton("图片检测")
        self.image_detect_button.clicked.connect(self.detect_image)
        self.image_detect_button.setEnabled(False)
        hbox_buttons.addWidget(self.image_detect_button)

        # 添加退出按钮
        self.exit_button = QPushButton("退出")
        self.exit_button.clicked.connect(self.exit_application)
        hbox_buttons.addWidget(self.exit_button)

    def detect_image(self):
        image_path, _ = QFileDialog.getOpenFileName(None, "选择图片文件", "", "图片文件 (*.jpg *.jpeg *.png)")
        if image_path:
            results = self.worker.detect_image(image_path)
            if results:
                annotated_image = results[0].plot()
                height, width, channel = annotated_image.shape
                bytesPerLine = 3 * width
                qimage = QImage(annotated_image.data, width, height, bytesPerLine, QImage.Format_BGR888)
                pixmap = QPixmap.fromImage(qimage)
                self.label.setPixmap(pixmap.scaled(self.label.size(), Qt.KeepAspectRatio))
        else:
            QMessageBox.critical(self, "错误", "请选择图片文件")

    def load_model(self):
        if self.worker.load_model():
            self.image_detect_button.setEnabled(True)

    def exit_application(self):
        # 终止程序运行
        sys.exit()


if __name__ == '__main__':
    app = QApplication(sys.argv)
    window = MainWindow()
    window.show()
    sys.exit(app.exec_())

训练模型看下面的文章

目标检测:yolov8(ultralytics)训练自己的数据集,新手小白也能学会训练模型,一看就会_yolov8s-优快云博客文章浏览阅读1.5w次,点赞95次,收藏324次。先配置环境,再获取制作自己的数据集,然后修改配置训练,最后验证训练结果,附带可视化界面。yolov8训练起来较为简单,如果有其他目标检测的数据集理论上可以直接拿来用,从第3训练模型开始看,新手小白0基础建议一步一步跟着来,哪里看不懂的或者遇到哪有问题可以评论区交流或者私信问~_yolov8s https://blog.youkuaiyun.com/qq_67105081/article/details/137545156?spm=1001.2014.3001.5502本文的检测界面已更新,可点击下方链接跳转

YOLOv11(Ultralytics)可视化界面ui设计,基于pyqt5,单文件即插即用,支持文件夹检测及云摄像头检测并保存_yolo11可视化界面系统-优快云博客文章浏览阅读1.7k次,点赞29次,收藏54次。检测图片并分别在左右窗口进行显示image_path, _ = QFileDialog.getOpenFileName(None, "选择图片文件", "", "图片文件 (*.jpg *.jpeg *.png)")image_rgb = cv2.cvtColor(image, cv2.COLOR_BGR2RGB) # 转换为 RGBannotated_image = cv2.cvtColor(annotated_image, cv2.COLOR_BGR2RGB) # 转换为 RGB。_yolo11可视化界面系统 https://blog.youkuaiyun.com/qq_67105081/article/details/143693371?sharetype=blogdetail&sharerId=143693371&sharerefer=PC&sharesource=qq_67105081&spm=1011.2480.3001.8118

更新的带有登陆注册界面及美化的PyQt5界面可点击下面的链接查看

Ultralytics可视化界面;YOLOv12;YOLOv11;YOLOv10;YOLOv8等通用可视化界面GUI设计,基于PyQt5,单文件即插即用,美化布局,新增登录注册界面-优快云博客文章浏览阅读691次,点赞16次,收藏18次。本文的可视化UI界面对于Ultralytics(目前的YOLOv12 & YOLOv11 & YOLOv10 & YOLOv8通用)的检测、分割、分类、姿势估算(detection, segmentation, obb, classification, and pose estimation)等均可正常显示。增加登录注册功能。 https://blog.youkuaiyun.com/qq_67105081/article/details/147745193?spm=1001.2014.3001.5501

需要更多功能的及其他需求可以私信,遇到报错可以在评论区交流,关注公众号获取更多资源~

评论 31
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

笑脸惹桃花

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值