OpenCV 4.4 发布!SIFT移到主库,新增YOLOv4 和 EfficientDet 推断支持

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

 

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

 

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

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,检测效果还不错:

 

 

想了解的朋友可以移步:

 

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

 

OpenCV-python 实现 YOLO v4

1 引入

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

2 准备工作

让我们开始吧!

 

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

 

coco数据集的类别名称

cfg配置文件

权重文件

 

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

 

 

下载有如下三种方式:

 

途径一:作者的GitHub

https://github.com/AlexeyAB/darknet

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

 

途径二:加群326866692

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

 

途径三:公众号回复

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

 

3 配置

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

 

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

 

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

 

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

 

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

 

model文件夹

 

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

 

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)

 

得到的检测结果如下:

 

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

 

 

第二个是可爱的小猫咪:

 

 

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

 

说在后面的话

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

 

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

 

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

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
OpenCV是一个广泛使用的开源计算机视觉库,而OpenCV Contrib是针对OpenCV的额外扩展模块。引用中的教程提供了配置OpenCVOpenCV Contrib的步骤。 首先,你需要下载并安装OpenCVOpenCV Contrib和Cmake。你可以从OpenCV官网下载OpenCV 4.4版本,并从GitHub下载OpenCV Contrib 4.4版本。Cmake可以从官网下载最新版本。 在配置过程中,你需要将一些文件放置在特定位置。引用提到了一些关键的文件和它们的放置位置。你需要将"opencv_world440d.lib"、"opencv_world440d.dll"、"opencv_world440.lib"和"opencv_world440.dll"这四个文件放置在你的源文件所在位置,并且将它们也放置在OpenCV 4.4.0生成的build文件夹的相应位置中。 具体来说,你需要将"opencv_world440.lib"和"opencv_world440d.lib"放置在"opencv-4.4.0/build/install/x64/vc15/lib"文件夹中。而"opencv_world440d.dll"和"opencv_world440.dll"需要放置在"opencv-4.4.0/build/install/x64/vc15/bin"文件夹中。 这些文件的大小为58MB。如果你需要这些文件,可以通过百度网盘链接下载。 总结起来,配置OpenCV 4.4 contrib需要下载和安装OpenCVOpenCV Contrib和Cmake,然后将一些关键文件放置在相应的位置。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *3* [opencv4.4.0配置opencv_contrib4.4.0教程](https://blog.csdn.net/m0_52918696/article/details/127054401)[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_2"}}] [.reference_item style="max-width: 50%"] - *2* [基于VS2019下opencv4.4+opencv_contrib4.4配置教程](https://blog.csdn.net/qq_36076137/article/details/109329324)[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_2"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值