这个博客系列,简单来说,今天我们就是要研究

6个文件,看看在最新的OpenCV中,它们是如何发挥作用的。
在配置使用的过程中,需要注意使用较高版本的VS避免编译器兼容问题;由于DNN程序的运行依赖于训练成功的模型,因此需要预先下载准备;此外如果出现各种报错,需要对症下药。
此外,由于需要使用common.hpp文件,所以需要引入dnn目录到include中
用到的数据集都放在:
链接:https://pan.baidu.com/s/1WPoXU3VodErPHZo6Yc21xA 
提取码:01no 
如果你没找到,那一定是我忘了。
=====================================================================================友善的分割线============================
教程给出了调用方法:

Usage examples

Execute in webcam:

$ example_dnn_object_detection --config=[PATH-TO-DARKNET]/cfg/yolo.cfg --model=[PATH-TO-DARKNET]/yolo.weights --classes=object_detection_classes_pascal_voc.txt --width=416 --height=416 --scale=0.00392 --rgb

Execute with image or video file:

$ example_dnn_object_detection --config=[PATH-TO-DARKNET]/cfg/yolo.cfg --model=[PATH-TO-DARKNET]/yolo.weights --classes=object_detection_classes_pascal_voc.txt --width=416 --height=416 --scale=0.00392 --input=[PATH-TO-IMAGE-OR-VIDEO-FILE] --rgb


参考这个 方法,修改我们的调用参数

--config=e:/template/yolov3.cfg --model=e:/template/yolov3.weights --classes=e:/template/object_detection_classes_pascal_voc.txt --width=416 --height=416 --scale=0.00392 --input=e:/template/bike.avi --rgb
 

所以我们需要先准备的是yolo.weights 和 yolo.cfg,
wget https://pjreddie.com/media/files/yolov3.weights
wget https://github.com/pjreddie/darknet/blob/master/cfg/yolov3.cfg?raw=true -O ./yolov3.cfg
wget https://github.com/pjreddie/darknet/blob/master/data/coco.names?raw=true -O ./coco.names







对象识别是CV和DL的经典问题,看看OpenCV自己提供了什么。
本来我使用的是OpenCV4,但是例子代码使用的是最新从网上下载的,开头直接给报了个错
根据我多年程序设计的经验(其实是瞎猜),我认为是不是我的OpenCV版本低了,感觉更新到最新版本(这里注意一下,对于vs2015和2017,opencv提供了prebuild版本,比如叫opencv-4.1.0-vc14_vc15.exe这样的名字,可以从官网直接下载)
注意prebuild是64位的,需要注意选择。然后就可以了,当然由于参数问题,仍然是需要进行修改的。(果然猜对了)
因为已经出现了能够正确运行的命令行,所以这里直接修改即可。
将汽车识别成bird肯定是错误的,但是object detection和class的区别在于跟踪,从显示的结果上来看,就是画框。

这个地方,就体现出了OpenCV DNN的黑盒特性,就是模型训练中的东西,可能是效果非常好的,也可能是效果不好的。
对这块的调节,不是OpenCV的工作,而是深度学习系统的工作—不管它是用什么训练出来的,我们都希望OpenCV能够提供一个接入现有系统的接口。
在深度学习这里,这才是OpenCV的价值。

参考资料:


附件列表

OpenCV自带dnn的Example研究(3)— object_detection的更多相关文章

  1. OpenCV自带dnn的Example研究(1)— classification

    这个博客系列,简单来说,今天我们就是要研究 https://docs.opencv.org/master/examples.html下的 6个文件,看看在最新的OpenCV中,它们是如何发挥作用的. ...

  2. OpenCV自带dnn的Example研究(2)— colorization

    这个博客系列,简单来说,今天我们就是要研究 6个文件,看看在最新的OpenCV中,它们是如何发挥作用的. 在配置使用的过程中,需要注意使用较高版本的VS避免编译器兼容问题:由于DNN程序的运行依赖于训 ...

  3. OpenCV自带dnn的Example研究(4)— openpose

    这个博客系列,简单来说,今天我们就是要研究 https://docs.opencv.org/master/examples.html下的 6个文件,看看在最新的OpenCV中,它们是如何发挥作用的. ...

  4. OpenCV自带dnn的Example研究(6)— text_detection

    这个博客系列,简单来说,今天我们就是要研究 https://docs.opencv.org/master/examples.html下的 6个文件,看看在最新的OpenCV中,它们是如何发挥作用的. ...

  5. OpenCV自带dnn的Example研究(5)— segmentation

    这个博客系列,简单来说,今天我们就是要研究 https://docs.opencv.org/master/examples.html下的 6个文件,看看在最新的OpenCV中,它们是如何发挥作用的. ...

  6. OpenCv dnn模块扩展研究(1)--style transfer

    一.opencv的示例模型文件   使用Torch模型[OpenCV对各种模型兼容并包,起到胶水作用], 下载地址: fast_neural_style_eccv16_starry_night.t7 ...

  7. 使用opencv自带的融合函数

    [wiki,blog]使用opencv自带的融合函数 [wiki,blog]使用opencv自带的融合函数 /*M/////////////////////////////////////////// ...

  8. 如何利用OpenCV自带的级联分类器训练程序训练分类器

    介绍 使用级联分类器工作包括两个阶段:训练和检测. 检测部分在OpenCVobjdetect 模块的文档中有介绍,在那个文档中给出了一些级联分类器的基本介绍.当前的指南描述了如何训练分类器:准备训练数 ...

  9. 【计算机视觉】如何使用opencv自带工具训练人脸检测分类器

    前言 使用opencv自带的分类器效果并不是很好,由此想要训练自己的分类器,正好opencv有自带的工具进行训练.本文就对此进行展开. 步骤 1.查找工具文件: 2.准备样本数据: 3.训练分类器: ...

随机推荐

  1. python MySQLdb 字段与关键字重名

    在做一个东西的时候,将字段命名为desc和describe. 构造sql语句并插入数据,报语法错误.一个一个字段排查,发现是这两个字段的问题. 找了一下,这两个是关键字. 所以,字段与关键字重名的时候 ...

  2. Python 合并两个列表的多种方式,合并两个字典的多种方式

    一.合并列表 1.最简单的,使用+连接符: >>> a = [1,2,3] >>> b = [7,8,9] >>> a + b [1, 2, 3, ...

  3. shiro学习总结(一)----初识shiro

    本系列内容大多总结自官网和张开涛的<跟我学Shiro> 一.shiro简介 1.1.shiro有什么用? shiro是一个功能强大使用简单的java安全框架,主要提供了五大功能: 1.认证 ...

  4. c#接口与抽象类的区别(一)

    abstract 修饰符用于表示所修饰的类是不完整的,并且它只能用作基类.抽象类与非抽象类在以下方面是不同的: 抽象类不能直接实例化,并且对抽象类使用 new 运算符是编译时错误.虽然一些变量和值在编 ...

  5. linux命令基础三

    使用cat命令进行文件的纵向合并使用cat命令实现文件的纵向合并: 例如:使用cat命令将baby.age.baby.kg和baby.sex这三个文件纵向合并为baby文件的方法:cat baby.a ...

  6. BZOJ.1492.[NOI2007]货币兑换(DP 斜率优化 CDQ分治/Splay)

    BZOJ 洛谷 如果某天能够赚钱,那么一定会在这天把手上的金券全卖掉.同样如果某天要买,一定会把所有钱花光. 那么令\(f_i\)表示到第\(i\)天所拥有的最多钱数(此时手上没有任何金券),可以选择 ...

  7. LOJ.2585.[APIO2018]新家(二分 线段树 堆)

    LOJ 洛谷 UOJ BZOJ 四OJ Rank1 hhhha 表示这个b我能装一年→_→ 首先考虑离线,将询问按时间排序.对于每个在\([l,r]\)出现的颜色,拆成在\(l\)加入和\(r+1\) ...

  8. BZOJ4966 : 总统选举

    线段树维护每个点的最有可能是答案的数以及它的权重. 合并两个节点的时候,将权重互相抵消,保留较大的那一个. 得到答案后,再在对应权值的Treap中查询出现次数,检查是否真正是答案. 时间复杂度$O(n ...

  9. springboot的常见问题错误

    一: org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 2 ...

  10. oval-and-rectangle

    oval-and-rectangle Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Other ...