python调用不同版本opencv_坐稳了,OpenCV老司机带你用OpenCV4实现YOLO v4物体检测

1704500485a49ec10217615999d87aac.png

戳一戳!和我一起走进opencv的世界

导读

OpenCV4终于更新啦!让我流下眼泪的,不是7月的高温,而是OpenCV4支持YOLO v4了。

在这篇文章,我将带领大家一起,回顾 OpenCV4.4.0 的更新, C++ 结合 OpenCV 、 Darknet 实现 YOLO v4 ,并带领大家一起用 python 语言结合 OpenCV4 实现 YOLO v4

如果你想了解更多有关于计算机视觉、OpenCV、机器学习、深度学习等相关技术的内容,想与更多大佬一起沟通,那就加群:326866692 或者扫描下方二维码加入我们吧!

d9736f153c5ae6f3f8ffeaedbce83ba6.png

OpenCV4 支持YOLO v4

经过久久的辛苦等待,OpenCV终于迎来了4.4.0。最让我激动地一个更新点就是它支持YOLO v4,之前的版本是不支持的!

想了解具体的更新点,请看下面的文章:

重磅!!!OpenCV4.4.0新鲜出炉!支持YOLO v4,SIFT免费使用

OpenCV-C++ 实现 YOLO v4

虽然刚开始OpenCV没有支持YOLO v4,但是在YOLO v4刚出不久,我就按耐不住激动地心情,进行了一波尝试,效果还不错!

我使用了OpenCV4.3.0版本和Darknet,检测效果还不错:

4946ae6255a624b4eb65b99e691f7aea.png

想了解的朋友可以移步:

【DL-YOLO】尝鲜!Windows下实现YOLOv4物体检测(VS2015+OpenCV)

OpenCV-python 实现 YOLO v4

1 引入

上面的方式虽然不用最新版的OpenCV,但是要使用Darknet框架,确实是比较麻烦的,但是有了最新版的OpenCV,再加上python强大的功能,实现起来就 so easy 了。

2 准备工作

让我们开始吧!

首先肯定要下载模型相关的文件的,我们至少需要:

coco数据集的类别名称

cfg配置文件

权重文件

一般来说,我们下载最常用的,就是我下图下载的文件:

ace73e8f4f50e93c51a893813849d11b.png

下载有如下三种方式:

途径一:作者的GitHub

https://github.com/AlexeyAB/darknet

这个会有最初始的模型,也会有详细的介绍。具体的内容,我就不过多说明啦,大家去网站中,就能看到。

途径二:加群326866692

加我们上面提到的技术群,我会把项目打包放到群文件。本文的全部代码、相关文件都会有。

途径三:公众号回复

在我的公众号回复YOLOv4,就可以获得对应的下载链接,内容和加群一样。

3 配置

上面的做完,准备工作就完成了。

接下来,我们新建一个python项目,配置参考下面这篇教程:

【OpenCV教程】01 OpenCV简介与安装

唯一不同的是,我们这里使用的是OpenCV4.4.0版本,而教程中的是OpenCV4.3.0版本。不过这并不影响我们的操作,请大胆参考。

在项目中新建一个文件夹,命名为model,用于存放上面用到的模型文件。具体内容请看下图:

4e73a77308eda7b5e93d1d2b7da7efbd.png

model文件夹

新建一个文件夹,命名为picture,用于存放我们测试的图片。(emm,我只是随便找了两张以前用过的测试图像,忽略这些)

5d199a678d28d4926e931efd28f20af9.png

picture文件夹

新建一个python文件YOLOv4.py,用于写代码。

注:

上面的命名方式,或者文件夹创建大家自由选择,大家也可以将模型,图片和代码都放在一个文件夹下。根据个人喜好决定

4 代码及检测结果

1、引用包

首先我们需要调用两个包,第一个是用于调用OpenCV,第二个帮助我们生成随机数。

import cv2 as cvimport random

2、保存模型及图片

然后我们定义几个变量存放模型和文件的路径及名称,用于后面加载模型及图片。

# 文件需要加载的文件cfg = "./model/yolov4.cfg"weights = "./model/yolov4.weights"imgName = "./picture/1.png"className = "./model/coco.names"

3、YOLO网络配置

我们需要配置网络,加载cfg配置文件、权重文件及数据集名称,对网络进行设置,用于后面检测图片。

# 网络设置net = cv.dnn_DetectionModel(cfg, weights)net.setInputSize(608, 608)net.setInputScale(1.0 / 255)net.setInputSwapRB(True)with open(className, 'rt') as f:    names = f.read().rstrip('\n').split('\n')

4、加载图像

我们需要加载图片,用于后面的检测。

# 加载图像及类别img = cv.imread(imgName)cv.imshow('read img', img)

5、使用网络检测图像

我们使用网络检测图像,检测到物体所属类别、位置、数据置信度等,并将数据保存到变量中。

# 模型检测classes, confidences, boxes = net.detect(img, confThreshold=0.1, nmsThreshold=0.4)

6、显示检测结果

将检测到的数据展示到图像中。

# 将检测结果显示到图像上for classId, confidence, box in zip(classes.flatten(), confidences.flatten(), boxes):    label = '%s: %.2f' % (names[classId], confidence)    labelSize, baseLine = cv.getTextSize(label, cv.FONT_HERSHEY_SIMPLEX, 0.5, 1)    left, top, width, height = box    top = max(top, labelSize[1])    b = random.randint(0,255)    g = random.randint(0,255)    r = random.randint(0,255)    cv.rectangle(img, box, color=(b, g, r), thickness=2)    cv.rectangle(img, (left-1, top - labelSize[1]), (left + labelSize[0], top), (b, g, r), cv.FILLED)    cv.putText(img, label, (left, top), cv.FONT_HERSHEY_SIMPLEX, 0.5, (255-b, 255-g, 255-r))cv.imshow('detect out', img)cv.waitKey(0)

得到的检测结果如下:

第一个是我们之前的那个马路上:

ead191a617a53d7b86f03e80f800f445.png

f13de7b5cf72d7d6e6a525428b2d6c64.png

第二个是可爱的小猫咪:

26171e5ba913c0ebafac425c50ac6390.png

020b29d777071a50d8e4c141c68f3f4f.png

检测效果还是很不错的,大家抓紧尝试一下!

说在后面的话

整体教程比较简单易懂,就是希望大家能够快速了解,并能够利用OpenCV4.4.0实现YOLO v4。

这个整体也很基础,不是做了一个项目,只是做了一个简单的检测。

但是没有关系,我想,这能让大多数人都能够快速体验 OpenCV4.4.0 和 YOLO v4 了。

目前来讲,这足够了,如果你还有别的想法或者问题,留言,告诉我

2d3f484d159ec378c5222603324bcead.png

如果喜欢这篇文章

麻烦给我一个在看

要将YOLOv5模型的识别结果显示出来,可以按照以下步骤进行操作: 1. 首先,确保你已经安装了必要的依赖项,如PyTorch、OpenCV等。可以通过pip install命令进行安装。 2. 接下来,加载YOLOv5模型并加载预训练权重。你可以使用提供的YOLOv5模型代码和已保存的模型权重来完成这一步骤。 3. 读取待检测的图像或视频,并将其输入到YOLOv5模型中进行目标检测。可以使用OpenCV库来读取图像或视频。 4. 对于每个检测到的目标,提取其类别、边界框坐标和置信度等信息。 5. 将目标检测结果绘制到原始图像或视频上,可以使用OpenCV库中的绘制函数来实现,如cv2.rectangle()和cv2.putText()。 6. 最后,显示绘制了目标检测结果的图像或视频。可以使用OpenCV库中的显示函数来展示,如cv2.imshow()。 综上所述,以上是将YOLOv5模型的识别结果显示出来的一种常见方法。具体的实现细节可以根据你的需求和使用的编程语言进行适当的调整。<span class="em">1</span> #### 引用[.reference_title] - *1* [YOLO v5安全帽检测模型代码和已训练好的模型权重](https://download.csdn.net/download/py_jie/85373315)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 100%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值