Yolo 多任务推理,摄像头+视频实时推理,实现关键点、分割、检测等模型推理部署

Yolo 多任务推理

支持检测、分类、分割、OBB旋转框检测、POSE关键点检测;支持图片、视频、摄像头实时推理

部分源码:

python 复制代码
import os
import sys
import time
from dataclasses import dataclass
from pathlib import Path
from typing import List, Optional, Tuple

import cv2
import numpy as np
import onnxruntime as ort
from PySide6.QtCore import QPoint, QTimer, Qt
from PySide6.QtGui import QImage, QPainter, QPixmap
from PySide6.QtWidgets import (
    QApplication,
    QComboBox,
    QDoubleSpinBox,
    QFileDialog,
    QFormLayout,
    QGroupBox,
    QHBoxLayout,
    QLabel,
    QLineEdit,
    QMainWindow,
    QMessageBox,
    QPushButton,
    QSpinBox,
    QVBoxLayout,
    QWidget,
)


IMAGE_EXTS = {".jpg", ".jpeg", ".png", ".bmp", ".tif", ".tiff", ".webp"}
POSE_SKELETON = [
    (0, 1), (0, 2), (1, 3), (2, 4),
    (5, 6), (5, 7), (7, 9), (6, 8), (8, 10),
    (5, 11), (6, 12), (11, 12),
    (11, 13), (13, 15), (12, 14), (14, 16),
]


@dataclass
class Detection:
    cls_id: int
    conf: float
    bbox: Tuple[int, int, int, int]


@dataclass
class OBBDetection:
    cls_id: int
    conf: float
    cx: float
    cy: float
    w: float
    h: float
    angle_deg: float


class ZoomPanLabel(QLabel):
    def __init__(self, text: str = ""):
        super().__init__(text)
        self._pixmap: Optional[QPixmap] = None
        self._scale = 1.0
        self._offset = QPoint(0, 0)
        self._dragging = False
        self._last_pos = QPoint(0, 0)
        self.setAlignment(Qt.AlignCenter)
        self.setStyleSheet("background:#1e1e1e;color:#cccccc;border:1px solid #444;")

    def set_image(self, pixmap: QPixmap):
        self._pixmap = pixmap
        self._scale = 1.0
        self._offset = QPoint(0, 0)
        self.update()

    def wheelEvent(self, event):
        if self._pixmap is None:
            return
        delta = event.angleDelta().y()
        factor = 1.15 if delta > 0 else 1 / 1.15
        self._scale = float(np.clip(self._scale * factor, 0.1, 20.0))
        self.update()

    def mousePressEvent(self, event):
        if event.button() == Qt.LeftButton and self._pixmap is not None:
            self._dragging = True
            self._last_pos = event.position().toPoint()
            self.setCursor(Qt.ClosedHandCursor)
        super().mousePressEvent(event)

    def mouseMoveEvent(self, event):
        if self._dragging and self._pixmap is not None:
            cur = event.position().toPoint()
            delta = cur - self._last_pos
            self._last_pos = cur
            self._offset += delta
            self.update()
        super().mouseMoveEvent(event)

    def mouseReleaseEvent(self, event):
        if event.button() == Qt.LeftButton:
            self._dragging = False
            self.setCursor(Qt.ArrowCursor)
        super().mouseReleaseEvent(event)

    def mouseDoubleClickEvent(self, event):
        self._scale = 1.0
        self._offset = QPoint(0, 0)
        self.update()
        super().mouseDoubleClickEvent(event)

    def paintEvent(self, event):
        super().paintEvent(event)
        if self._pixmap is None:
            return
        painter = QPainter(self)
        painter.setRenderHint(QPainter.SmoothPixmapTransform, True)
        sw = int(self._pixmap.width() * self._scale)
        sh = int(self._pixmap.height() * self._scale)
        scaled = self._pixmap.scaled(sw, sh, Qt.KeepAspectRatio, Qt.SmoothTransformation)
        x = (self.width() - scaled.width()) // 2 + self._offset.x()
        y = (self.height() - scaled.height()) // 2 + self._offset.y()
        painter.drawPixmap(x, y, scaled)

实现效果

检测:
分割:
分类:
关键点:
视频推理:
完整演示:

https://live.csdn.net/v/522949

相关推荐
明月醉窗台4 小时前
C++ tensorrt部署时打包需要的依赖库
yolo·nvidia
闻道且行之5 小时前
TurboOCR:基于PP-OCRv6的极速Windows离线OCR工具,深度解析3.4GB依赖背后的技术架构
c++·人工智能·python·qt·机器学习·ocr
许彰午5 小时前
95_Python内存管理与垃圾回收
开发语言·python
骄阳如火6 小时前
Python 性能深度剖析:从“被诟病的慢”到“Rust 重塑”的拐点
python
满怀冰雪6 小时前
03-第一个 Paddle 程序:Tensor 创建、计算与设备管理
人工智能·python·paddle
CClaris7 小时前
大模型量化从0到1(九):用 llama.cpp 把模型转成 GGUF 并跑本地推理
人工智能·pytorch·python·深度学习·llama
学编程的小虎7 小时前
SenseVoice微调
人工智能·python·自然语言处理
诸葛说抛光7 小时前
国内大型汽车改装展览会定展 佛山改装 佛山汽车赛事
python·汽车
chouchuang8 小时前
day-030-综合练习-笔记管理器
开发语言·笔记·python
乖巧的妹子8 小时前
Python基础核心知识点详解:内置函数、运算符、字符串方法、数据结构与类型转换
python