21xrx.com
2025-04-02 20:35:16 Wednesday
文章检索 我的文章 写文章
使用OpenCV调用YOLOv5模型的ONNX方式
2023-10-02 00:14:40 深夜i     55     0
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方式进行目标检测。希望本文能帮助到对此感兴趣的读者。

  
  

评论区

请求出错了