21xrx.com
2024-12-22 16:29:12 Sunday
登录
文章检索 我的文章 写文章
OpenCV在YOLOv5上的图像显示
2023-08-18 01:16:49 深夜i     --     --
OpenCV YOLOv5 图像显示

OpenCV是一个广泛使用的开源计算机视觉库,而YOLOv5则是一个基于深度学习的目标检测算法。将这两者结合使用可以实现强大的实时图像检测和显示。在本文中,我们将介绍如何使用OpenCV在YOLOv5上显示检测到的目标。

首先,我们需要安装OpenCV和YOLOv5。可以通过命令行或者使用包管理器如pip进行安装。安装完成后,我们可以开始编写代码。

首先,我们需要导入opencv和其他必要的库:


import cv2

import torch

from models.experimental import attempt_load

from utils.general import non_max_suppression, scale_coords

from utils.torch_utils import select_device

接下来,我们需要加载YOLOv5的权重文件和模型配置:


weights = 'path/to/weights.pt' # 替换为YOLOv5的权重文件路径

device = select_device('') # 设置为'cpu'以使用CPU or '0'/'1'来使用GPU

model = attempt_load(weights, map_location=device)

现在,我们可以开始读取图像并进行目标检测:


img = 'path/to/image.jpg' # 替换为要检测的图像路径

img = cv2.imread(img)

img = cv2.cvtColor(img, cv2.COLOR_BGR2RGB)

img = torch.from_numpy(img.transpose(2, 0, 1)).float().div(255.0).unsqueeze(0)

接下来,我们需要将图像输入到YOLOv5模型中进行检测,得到检测结果:


device = torch.device(device)

model.to(device).eval()

img = img.to(device)

pred = model(img)[0]

pred = non_max_suppression(pred, conf_thres=0.5, iou_thres=0.5)

最后,我们可以使用OpenCV将检测结果标注在图像上并显示:


for det in pred:

  det[:, :4] = scale_coords(img.shape[2:], det[:, :4], img.shape[2:]).round()

  for *xyxy, conf, cls in reversed(det):

    label = '%s %.2f' % (names[int(cls)], conf)

    plot_one_box(xyxy, img, label=label, color=colors[int(cls)], line_thickness=3)

img = img.squeeze(0).permute(1, 2, 0).cpu().numpy()

img = cv2.cvtColor(img, cv2.COLOR_RGB2BGR)

cv2.imshow('YOLOv5 Object Detection', img)

cv2.waitKey(0)

cv2.destroyAllWindows()

在以上代码中,我们使用了YOLOv5模型对图像进行目标检测,并使用OpenCV将检测结果标注在图像上并显示出来。

总结起来,使用OpenCV在YOLOv5上显示检测到的目标是一种强大而且相对简单的方式。通过结合两者的功能,我们可以轻松地实现实时图像检测和显示。希望这篇文章对你有所帮助!

  
  

评论区

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