源代码

#include<opencv2/opencv.hpp>
#include<opencv2/dnn.hpp>
#include <iostream>
#include<string>using namespace std;
using namespace cv;
using namespace dnn;int main()
{String modelConfiguration = "/home/oliver/darknet-master/cfg/yolov2.cfg";String modelBinary = "/home/oliver/darknet-master/yolov2.weights";dnn::Net net = readNetFromDarknet(modelConfiguration, modelBinary);if (net.empty()){printf("Could not load net...\n");return 0;}vector<string> classNamesVec;ifstream classNamesFile("/home/oliver/darknet-master/data/coco.names");if (classNamesFile.is_open()){string className = "";while (std::getline(classNamesFile, className))classNamesVec.push_back(className);}// 加载图像VideoCapture capture(2);// VideoCapture:OENCV中新增的类,捕获视频并显示出来while (1){Mat frame;capture >> frame;Mat inputBlob = blobFromImage(frame, 1 / 255.F, Size(608, 608), Scalar(), true, false);net.setInput(inputBlob, "data");// 检测Mat detectionMat = net.forward("detection_out");vector<double> layersTimings;double freq = getTickFrequency() / 1000;double time = net.getPerfProfile(layersTimings) / freq;ostringstream ss;ss << "detection time: " << time << " ms";putText(frame, ss.str(), Point(20, 20), 0, 0.5, Scalar(0, 0, 255));// 输出结果for (int i = 0; i < detectionMat.rows; i++){const int probability_index = 5;const int probability_size = detectionMat.cols - probability_index;float *prob_array_ptr = &detectionMat.at<float>(i, probability_index);size_t objectClass = max_element(prob_array_ptr, prob_array_ptr + probability_size) - prob_array_ptr;float confidence = detectionMat.at<float>(i, (int)objectClass + probability_index);if (confidence > 0.5){float x = detectionMat.at<float>(i, 0);float y = detectionMat.at<float>(i, 1);float width = detectionMat.at<float>(i, 2);float height = detectionMat.at<float>(i, 3);int xLeftBottom = static_cast<int>((x - width / 2) * frame.cols);int yLeftBottom = static_cast<int>((y - height / 2) * frame.rows);int xRightTop = static_cast<int>((x + width / 2) * frame.cols);int yRightTop = static_cast<int>((y + height / 2) * frame.rows);Rect object(xLeftBottom, yLeftBottom,xRightTop - xLeftBottom,yRightTop - yLeftBottom);rectangle(frame, object, Scalar(0, 0, 255), 2, 8);if (objectClass < classNamesVec.size()){ss.str("");ss << confidence;String conf(ss.str());String label = String(classNamesVec[objectClass]) + ": " + conf;int baseLine = 0;Size labelSize = getTextSize(label, FONT_HERSHEY_SIMPLEX, 0.5, 1, &baseLine);rectangle(frame, Rect(Point(xLeftBottom, yLeftBottom),Size(labelSize.width, labelSize.height + baseLine)),Scalar(255, 255, 255), CV_FILLED);putText(frame, label, Point(xLeftBottom, yLeftBottom + labelSize.height),FONT_HERSHEY_SIMPLEX, 0.5, Scalar(0, 0, 0));}}}cv::namedWindow("YOLO-Detections",0);cv::imshow("YOLO-Detections", frame);waitKey(30);}return 0;
}

实验结果

Opencv3.4.2调用yolov2进行物体检测源代码相关推荐

  1. 百度EasyDL 物体检测模型实践(转)

    参考网址:快速上手百度大脑EasyDL专业版·物体检测模型(附代码)_JKX_geek的博客-CSDN博客 .    简介: 1.1.    什么是EasyDL专业版 EasyDL专业版是EasyDL ...

  2. IoT: Win10+Tensorflow+OpenCV+IPCamera 实时视频物体检测

    IoT: Win10+Tensorflow+OpenCV+IPCamera 实时视频物体检测 环境配置 Python3.5 既然是windows下用python,那就不要作死自己弄环境了,直接用ana ...

  3. 实操教程:android camera nanodet 实时物体检测的高效实现总结

    作者丨nihui@知乎(已授权) 来源丨https://zhuanlan.zhihu.com/p/356991989 编辑丨极市平台 未经允许禁止二次转载 导读 本文介绍了配合高效的Android应用 ...

  4. 利用opencv进行移动物体检测

    进行运动物体检测就是将动态的前景从静态的背景中分离出来.将当前画面与假设是静态背景进行比较发现有明显的变化的区域,就可以认为该区域出现移动的物体.在实际情况中由于光照阴影等因素干扰比较大,通过像素直接 ...

  5. CNN应用之基于Overfeat的物体检测-2014 ICLR-未完待续

    转载自:深度学习(二十)CNN应用之基于Overfeat的物体检测-2014 ICLR-未完待续 - hjimce的专栏 - 博客频道 - CSDN.NET http://blog.csdn.net/ ...

  6. 深度学习(二十)基于Overfeat的物体检测-2014 ICLR-未完待续

    基于Overfeat的物体检测 原文地址:http://blog.csdn.net/hjimce/article/details/50187881 作者:hjimce 一.相关理论 本篇博文主要讲解经 ...

  7. tengine简单安装_实操丨如何在EAIDK上部署Tengine开发AI应用之物体检测应用入门(C++)...

    前言:近期推出的嵌入式AI系列直播公开课受到广大开发者的喜爱,并收到非常多的反馈信息,其中对如何在EAIDK上面部署Tengine开发AI应用感兴趣的开发者不在少数,我们将分2期以案例实操的形式详细介 ...

  8. 深度学习三(PyTorch物体检测实战)

    深度学习三(PyTorch物体检测实战) 文章目录 深度学习三(PyTorch物体检测实战) 1.网络骨架:Backbone 1.1.神经网络基本组成 1.1.1.卷积层 1.1.2.激活函数层 1. ...

  9. 深度学习二(Pytorch物体检测实战)

    深度学习二(Pytorch物体检测实战) 文章目录 深度学习二(Pytorch物体检测实战) 1.PyTorch基础 1.1.基本数据结构:Tensor 1.1.1.Tensor数据类型 1.1.2. ...

  10. 利用modelarts和物体检测方式识别验证码

    近来有朋友让老山帮忙识别验证码.在github上查看了下,目前开源社区中主要流行以下几种验证码识别方式: tesseract-ocr模块: 这是HP实验室开发由Google 维护的开源 OCR引擎,内 ...

最新文章

  1. LintCode: Edit Distance
  2. TCP_DEFER_ACCEPT
  3. 转载文章,感觉真的很心酸
  4. 使用 SAP Business Application Studio 搭建 CAP Java 开发环境
  5. python超神之路:Python3 列表list合并的4种方法
  6. Linux历史,安装,分区,版本
  7. 【面向对象】可变对象和不可变对象
  8. ICCV2021 新增数据集汇总 | 含时序动作定位、时空行为检测、弱光目标检测等!...
  9. 30年前的中专相当于现在什么学历?比现在一本厉害吗?
  10. 金融学python还是c语言_金融矿工(Quant)必须会写哪些编程语言?Python和C++就够了吗?...
  11. 【Luogu1908】逆序对(离散化,树状数组求逆序对)
  12. 如何做好产品需求设计和开发
  13. 七月算法-P2 概率论与数理统计(1)
  14. Firefox主页被360篡改该怎么办
  15. yourshelf是什么意思中文_英语shelf的中文是什么意思
  16. 解决oracle 报 ORA-20000(ORU-10027)错误的方法
  17. uniapp 获取到当前位置信息显示在地图上
  18. Vue+JTopo(一)
  19. DBCO-Raltitrexed-PEG DBCO-雷替曲塞-聚乙二醇
  20. 机器学习之深度学习简介

热门文章

  1. hdu 3951 博弈
  2. GridBagLayout用法
  3. MinIO之C#上传文件等各项操作
  4. 经典排序算法(五)--鸽巢排序Pigeonhole Sort
  5. Python 格式化字符串f-string概览(转载)
  6. 链表最小结构(C++版本)
  7. C++ 智能指针unique_ptr的简单实现
  8. 计算机硬盘必内存的容量大,电脑基础知识:内存条的作用
  9. mybatis关于factorybean疑问
  10. FISCO BCOS(三)——— 部署及调用HelloWorld合约