用C++ 和OpenCV 实现视频目标检测(YOLOv4模型)(文末抽奖赠书)

共 3335字,需浏览 7分钟

 ·

2021-05-05 10:25






据说,现在很多小区都上线了AI抓拍高空抛物的黑科技,可以自动分析抛物轨迹,用来协助检查很多不文明行为




你想不想知道,这类检测视频中目标物的黑科技是怎么实现的呢?




虽然不同场景下的目标检测模型训练不同,但底层技术都是一样的。




这里就一步步来教一下大家如何用C++ 和OpenCV 实现视频目标检测(YOLOv4模型)。



1.     实现思路


读取视频流,载入模型,执行推理,找出所有目标及其位置,最后绘制检测结果。


2.     实现步骤


读取摄像头视频流或本地视频文件:








cv::VideoCapture cap;cap.open(0); //打开摄像头//cap.open("TH1.mp4"); //读取视频文件


载入模型:







cv::dnn::Net net = cv::dnn::readNet(config, model, framework);net.setPreferableTarget(cv::dnn::DNN_TARGET_CUDA);


执行推理:






net.forward(outs, outNames); //前向传播


找出所有目标及其位置:











for (size_t i = 0; i < outs.size(); ++i) {     data = (float*)outs[i].data;     for (int j = 0; j < outs[i].rows; ++j, data += outs[i].cols)     {         scores = outs[i].row(j).colRange(5, outs[i].cols);         cv::minMaxLoc(scores, 0, &confidence, 0, &classIdPoint);


绘制检测结果:











void drawPred(    cv::Mat &frame,    vector<cv::Rect> &boxes,    vector<int> &classIds,    vector<int> &indices,    vector<string> &classNamesVec)


 


(a)测试图1YOLOv4





(b)测试图1YOLOv4-tiny



(c)测试图2YOLOv4



(d)测试图2YOLOv4-tiny


图 YOLOv4与YOLOv4-tiny模型的检测结果


3.     总结


YOLOv4的检测精度优于YOLOv4-tiny。经GPU 加速后,模型推理速度明显提升,YOLOv4 的推理速度提高了约10倍,YOLOv4-tiny的推理速度提高了约4.8倍。





若想了解更多关于视频检测或文本检测的内容,可以阅读《OpenCV 4机器学习算法原理与编程实战》一书












▊《OpenCV 4机器学习算法原理与编程实战


朱斌 著





















  • 注重理论结合实战


  • 兼顾经典与前沿算法


  • 应用案例翔实


  • 学习路线清晰




本书主要面向OpenCV领域的研究与开发人员,采用原理结合实战的方式,介绍OpenCV 4的机器学习算法模块与深度神经网络模块中的核心算法原理与C++编程实战。全书共10章, 第1~3章, 介绍OpenCV 4的基础知识、基本图像操作和机器学习基础知识;第4~8章,介绍K-means、KNN、决策树、随机森林、Boosting算法和支持向量机等机器学习算法与编程实战;第9~10章,介绍神经网络与深度神经网络的基本原理与编程实战,并提供了不同深度学习模型的部署示例代码。


本书基本聚焦于机器学习在计算机视觉领域的应用,不要求读者具有相应的知识背景,在必要时书中会介绍相关的基本概念。因此,本书既可以作为相关专业学生的实验教材,也可以作为研究人员或工程技术人员的参考资料。



(扫码了解本书详情)






小伙伴们注意啦,本书30号最后一天能参加100-50的活动,大家需要买书的话赶紧扫码下单吧, 五一期间就没有优惠了!!!!



我们将向读者免费赠送两本《OpenCV 4机器学习算法原理与编程实战》,你只需要点击下方抽奖链接,并邀请好友为你助力,将会有机会获得这本书!

获奖名额有限!想要的朋友们加油分享吧!


活动截止时间:2021年5月2号   晚8点整

点击抽奖








下载1:OpenCV-Contrib扩展模块中文版教程




在「小白学视觉」公众号后台回复:扩展模块中文教程即可下载全网第一份OpenCV扩展模块教程中文版,涵盖扩展模块安装、SFM算法、立体视觉、目标跟踪、生物视觉、超分辨率处理等二十多章内容。






下载2:Python视觉实战项目52讲


小白学视觉公众号后台回复:Python视觉实战项目即可下载包括图像分割、口罩检测、车道线检测、车辆计数、添加眼线、车牌识别、字符识别、情绪检测、文本内容提取、面部识别等31个视觉实战项目,助力快速学校计算机视觉。






下载3:OpenCV实战项目20讲


小白学视觉公众号后台回复:OpenCV实战项目20讲即可下载含有20个基于OpenCV实现20个实战项目,实现OpenCV学习进阶。





交流群




欢迎加入公众号读者群一起和同行交流,目前有SLAM、三维视觉、传感器自动驾驶、计算摄影、检测、分割、识别、医学影像、GAN算法竞赛等微信群(以后会逐渐细分),请扫描下面微信号加群,备注:”昵称+学校/公司+研究方向“,例如:”张三 + 上海交大 + 视觉SLAM“。请按照格式备注,否则不予通过。添加成功后会根据研究方向邀请进入相关微信群。请勿在群内发送广告,否则会请出群,谢谢理解~









浏览 23
点赞
评论
收藏
分享

手机扫一扫分享

分享
举报
评论
图片
表情
推荐
点赞
评论
收藏
分享

手机扫一扫分享

分享
举报