使用 OpenCV 和 ONNX Runtime 对图像进行目标检测(YOLOV8N&智能车竞赛&目标识别)

一.项目介绍

本人为新手小白,因为比赛需要参考yolov8官方库写了一份使用 OpenCV 和 ONNX Runtime 对图像进行目标检测代码。其中或有不足之处,仅供参考。

本项目使用yolov8.n模型训练并导出为onnx文件,在opencv中结合ONNX Runtime 开源库实现图像中目标检测。示例内容为在图像中检测字母A,B。

本项目旨在对输入图片进行目标检测,对于检测实时视频流,只需要将照片改为输入图像的每帧图像即可,想偷懒的你让ai帮你实现也是可行的。

二.项目技术和方法

1.OpenCV

OpenCV(Open Source Computer Vision Library)是一个开源的计算机视觉和机器学习软件库。它提供了数百种计算机视觉算法,包括图像处理、特征检测、目标跟踪、人脸识别等。OpenCV 支持多种编程语言(如 C++、Python、Java 等),并且可以跨平台运行(Windows、Linux、macOS、Android、iOS)。

使用 OpenCV 进行目标检测的优势包括:

广泛使用的库:OpenCV 是计算机视觉领域最常用的库之一,拥有庞大的用户社区和丰富的文档资源。
图像处理能力:OpenCV 提供了强大的图像处理功能,可以用于预处理图像以提高目标检测模型的准确性。
硬件加速:OpenCV 支持多种硬件加速,如使用 GPU 加速图像处理。

2. ONNX Runtime

ONNX Runtime 是一个用于加速机器学习推理的开源库。它通过跨平台、高性能的推理引擎,能够有效地运行 ONNX 格式的模型。ONNX(Open Neural Network Exchange)是一个开放的深度学习模型交换格式,允许不同的深度学习框架(如 PyTorch、TensorFlow 等)之间的模型互操作。

使用 ONNX Runtime 进行目标检测的优势包括:

跨平台支持:ONNX Runtime 支持多种操作系统(Windows、Linux、macOS)和硬件平台(CPU、GPU、TPU、FPGA)。
高性能推理:ONNX Runtime 通过优化计算图和利用硬件加速,提供了高效的推理性能。
模型兼容性:ONNX 格式允许模型在不同的深度学习框架之间进行转换,使得模型的部署更加灵活。

3. 结合 OpenCV 和 ONNX Runtime 进行目标检测

结合 OpenCV 和 ONNX Runtime 进行目标检测的基本步骤如下:

加载图像:使用 OpenCV 读取图像文件,并进行必要的预处理(如缩放、归一化等)。
加载模型:使用 ONNX Runtime 加载预训练好的 ONNX 格式的目标检测模型。
推理:将预处理后的图像输入到模型中,使用 ONNX Runtime 进行推理,得到目标检测的结果。
后处理:使用 OpenCV 对检测结果进行后处理,如绘制边界框和标签。

三.项目准备

1.使用yolo训练出自己的数据集,并导出为后缀名为onnx的文件。

此类教程互联网上有,这里就不赘述了。

2.安装opencv-python包

pip install opencv-python

3.安装ONNX Runtime包

pip install onnxruntime

四.项目源码(含注释)

#######这段代码主要是使用 OpenCV 和 ONNX Runtime 对图像进行目标检测

import cv2
import numpy as np
import onnxruntime as ort

# 定义类别标签
CLASSES = ["A", "B", "right", "left"]  

# 随机生成每个类别的颜色
colors = np.random.uniform(0, 255, size=(len(CLASSES), 3))

# 初始化标志
no_flag = 0

# 绘制边界框的函数
def draw_bounding_box(img, class_id, confidence, x, y, x_plus_w, y_plus_h):
    label = f"{
     CLASSES[class_id]} ({
     confidence:.2f})"  # 创建标签字符串
    color = colors[class_id]  
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值