21xrx.com
2024-12-22 16:53:42 Sunday
登录
文章检索 我的文章 写文章
使用OpenCV调用YOLOv5模型的ONNX方式
2023-10-02 00:14:40 深夜i     --     --
OpenCV YOLOv5 ONNX 调用 模型

在计算机视觉领域,YOLO(You Only Look Once)是一种流行的目标检测算法。而YOLOv5是YOLO系列中最新的模型,以其高速和高准确性而闻名。本文将介绍如何使用OpenCV调用YOLOv5模型的ONNX方式进行目标检测。

首先,我们需要下载YOLOv5模型的ONNX版本。可以在YOLOv5的官方GitHub仓库中找到ONNX版本的模型文件。下载完成后,将模型文件保存在本地。

接下来,我们需要安装OpenCV。可以通过pip命令来安装OpenCV库,确保版本是最新的。

python

pip install opencv-python

安装完成后,我们可以开始加载YOLOv5模型并进行目标检测。首先,我们需要导入必要的库。

python

import cv2

import numpy as np

接下来,我们可以使用OpenCV的dnn模块来加载YOLOv5模型。

python

model = cv2.dnn.readNetFromONNX("path/to/onnx/model")

在加载模型之后,我们可以读取图像并进行预处理。YOLOv5的输入图像尺寸为(640, 640)。

python

image = cv2.imread("path/to/image")

height, width, _ = image.shape

blob = cv2.dnn.blobFromImage(image, 1 / 255.0, (640, 640), swapRB=True, crop=False)

model.setInput(blob)

然后,我们可以通过模型进行前向推理。

python

outputs = model.forward()

输出结果是一组检测到的边界框以及对应的类别和置信度。我们可以通过遍历输出结果来获取每个边界框的信息。

python

for output in outputs:

  confidence = output[4]

  class_id = output[5]

  x_min = int(output[0] * width)

  y_min = int(output[1] * height)

  x_max = int(output[2] * width)

  y_max = int(output[3] * height)

  cv2.rectangle(image, (x_min, y_min), (x_max, y_max), (0, 255, 0), 2)

  cv2.putText(image, f"Class: {class_id}, Confidence: {confidence}", (x_min, y_min - 10), cv2.FONT_HERSHEY_SIMPLEX, 0.9, (0, 255, 0), 2)

最后,我们可以显示检测结果并保存输出图像。

python

cv2.imshow("Output", image)

cv2.waitKey(0)

cv2.imwrite("path/to/output/image", image)

cv2.destroyAllWindows()

通过上述步骤,我们成功地使用OpenCV调用了YOLOv5模型的ONNX方式进行目标检测。希望本文能帮助到对此感兴趣的读者。

  
  

评论区

{{item['qq_nickname']}}
()
回复
回复