本文主要是对下面网址博客中内容的实例操作:

http://blog.csdn.net/byxdaz/article/details/4907211

在上述博客中,详细的讲述了OpenCV训练分类器的做法。虽然他的步骤很详细,但是不能被人很快的利用到实践中来。所以我归纳这些内容,能够让人很快的动手操作起来,这样对于一个新手来说一个多小时就可以很快的掌握做分类器的方法了。

一:分别准备好正负样本

将正样本剪裁统一大小,放到一个的文件夹里面。

将一些和待检测图像无关的照片放入一个文件夹里面。--负样本图片大小不得小于正样本图片大小,且负样本图片内不能有要检测图像的信息。

二:基本DOS命令行介绍

打开运行搜索框((window7系统快捷键是ctrl+R,也可以在开始页面下面找)(windows8系统在开始页面的右上角))。在运行搜索框输入“cmd”就可以找到”命令提示符控制台”;

基本命令行方法:如果想要进入某个磁盘,则输入”[磁盘符号]:”+ENTER就行了。

例如:进入F盘,在命令行输入 f:  然后回车就进入了。

在磁盘内如果要进入某个文件应输入: cd [filename] +enter就可以了。

例如:进入本磁盘的Opencv文件夹就输入: cd Opencv 然后回车就可以了。

如果要清除控制台内的内容,输入cls就可以了。

如下图:

三:负样本制作和正样本准备

采用DOS命令生成负样本文件

打开命令提示符控制台:

利用命令进入你的负样本所在文件夹:例如我的在f:\Opencv\minor

1: 输入 f: 按回车

2:输入 cd Opencv\minornumber 按回车

然后输入如下命令: dir /b >minor.dat

然后在你的负样本图片相应文件夹下就会有了minor.dat文件。用word文档打开它然后删除里面的minor.dat一行就好了。

然后就可以生成负样本描述文件minor.dat了。

负样本已经准备好了,要做正样本。同样按照上述方式生成负样本描述文件。(这是为正样本准备工作)。

我做的负样本描述文件是minor.dat,,正样本描述文件是nativesample.dat

我没有截屏,这是原来博客中的截屏。这一步比较简单。下面才是最麻烦的。

四:将正文本nativesample.dat文件修改,并改成native.vec文件。

用记事本或者word文档打开nativesample.dat,最后用替换工具将“bmp”全部替换成“bmp 1 1 1 40 40”

1 1 1 40 40 代表的是图片的数量,起始位置和宽和高。

解释上面数字的意思,有一张该类型图片,从第一张开始,到第一张结束,宽40,高40

然后用DOS命令将nativesample.dat文件转化成native.vec文件。

进入nativesample.dat所在磁盘中的主文件夹。

我的磁盘及主文件夹是:F:\Opencv

输入f : 按回车

输入 cd Opencv 回车

采用DOS命令(就是指windows运行里面的命令行代码)进行转换。

在OpenCV安装包里面的一个bin文件夹里面有opencv_createsamples.exe程序

一般的bin文件地址是(OpenCV\build\x86\vc12\bin);

例如我的opencv_createsamples.exe程序在g:\OpenCV2.0\bin\下

则输入下面命令:

“g:\OpenCV2.0\bin\opencv_createsamples.exe” -info “nativenumber\nativesamples.dat” -vec background\native.vec -num 8 -w 40 -h 40

解释:

代表opencv_createsamples.exe路径:“g:\OpenCV2.0\bin\opencv_createsamples.exe”

代表nativesamples.dat文件作为参数传递到上面程序:

-info  “nativenumber\nativesamples.dat”

代表我要生成vec类型的文件,参数我要保存这个文件的路径及文件名字

-vec  background\native.vec

代表我的图片数量 -num 8

宽和高 -w 40 -h 40

五:分类器训练,生成txt文件

输入命令行:

“g:\OpenCV2.0\bin\opencv_haartraining.exe” -data background -vec background\native.vec -bg minornumber\minor.dat -npos 8 -nneg 3 -mem 200 -mode ALL -w 40 -h 40

-data background 代表的是我要把文件保存的地址,如下图所示,因为是在f:\Opencv下面执行的,background是其中的子文件夹,所以不用写全路径。

-vec background\native.vec 指的是参数native.vec的文件路径

-bg minornumber\minor.dat 指的是参数背景文件,即负样本路径

其他的全部COPY就好了(链接的博客里有详细介绍)

六:因为生成的文件是txt格式,不符合分类器的最后需求

所以需要最后一步转换文件,将txt文件转换成xml文件(它才是能够成为真正意义上的可加载的分类器文件)

将正负样本的文件(native.vec,minor.dat)放到一个文件夹下面,

然后输入如下图的代码:

前面就是convert_cascade.exe的文件路径

--size指的是图片的宽和高

F:\\Opencv\\background 是该文件的地址

最后是文件要保存的地址全路径

然后回车就好了。这样一个分类器就做好了,可以进行简单的图片检测。

OpecnCV训练分类器详细整理的更多相关文章

  1. 利用opencv源代码和vs编程序训练分类器haartraining.cpp

    如需转载请注明本博网址:http://blog.csdn.net/ding977921830/article/details/47733363. 一  训练框架 训练人脸检測分类器须要三个步骤: (1 ...

  2. vsftpd配置参数详细整理

    vsftpd配置参数详细整理  -|白王斧三又干一 vsftpd配置参数详细整理     -|白王斧三又干一 发表于 2005-10-23 20:30:00   1.vsftpd配置参数详细整理#接受 ...

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

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

  4. opencv 手写选择题阅卷 (三)训练分类器

    opencv 手写选择题阅卷 (三)训练分类器 1,分类器选择:SVM 本来一开始用的KNN分类器,但这个分类器目前没有实现保存训练数据的功能,所以选择了SVN分类器; 2,样本图像的预处理和特征提取 ...

  5. OpenCV训练分类器制作xml文档

    OpenCV训练分类器制作xml文档 (2011-08-25 15:50:06) 转载▼ 标签: 杂谈 分类: 学习 我的问题:有了opencv自带的那些xml人脸检测文档,我们就可以用cvLoad( ...

  6. [PyTorch入门之60分钟入门闪击战]之训练分类器

    训练分类器 目前为止,你已经知道如何定义神经网络.计算损失和更新网络的权重.现在你可能在想,那数据呢? What about data? 通常,当你需要处理图像.文本.音频或者视频数据时,你可以使用标 ...

  7. 训练分类器 - 基于 PyTorch

    训练分类器 目前为止,我们已经掌握了如何去定义神经网络.计算损失和更新网络中的权重. 关于数据 通常来讲,当你开始处理图像.文字.音频和视频数据,你可以使用 Python 的标准库加载数据进入 Num ...

  8. SVM+HOG特征训练分类器

    #1,概念 在机器学习领域,支持向量机SVM(Support Vector Machine)是一个有监督的学习模型,通常用来进行模式识别.分类.以及回归分析. SVM的主要思想可以概括为两点:⑴它是针 ...

  9. [转] 详细整理:UITableView优化技巧

      原文:http://www.cocoachina.com/ios/20150602/11968.html   最近在微博上看到一个很好的开源项目VVeboTableViewDemo,是关于如何优化 ...

随机推荐

  1. 正式放弃Edge,重新拥抱Chrome

    从Edge还叫斯巴达的时候我就开始用了,本来对浏览器的要求也没多高,能够打开多个选项卡,稳定,支持最新的规范就好了. 但是Edge真的是越来越让我失望了,卡死问题越来越多,崩溃越来越频繁,我也快奔溃了 ...

  2. Memcache的客户端连接系列(三) C++

    关键词: Memcached   C++ 客户端 声明:本文并非原创,转自华为云帮助中心的分布式缓存服务(Memcached)的用户指南.客户端连接方法通用,故摘抄过来分享给大家. C++客户端示例 ...

  3. C#二次封装虹软arc研究

    相信很多用C#又想用虹软的SDK的童鞋要花很多心思去研究怎么转换,所以写了一篇文章和一个demo方便用C#的童鞋方便调用虹软的接口, 文章的地址是:https://blog.xgcos.com/sho ...

  4. 基于MTCNN多任务级联卷积神经网络进行的人脸识别 世纪晟人脸检测

    神经网络和深度学习目前为处理图像识别的许多问题提供了最佳解决方案,而基于MTCNN(多任务级联卷积神经网络)的人脸检测算法也解决了传统算法对环境要求高.人脸要求高.检测耗时高的弊端. 基于MTCNN多 ...

  5. POJ 2229 计数DP

    dp[i]代表是数字i的最多组合数如果i是一个奇数,i的任意一个组合都包含1,所以dp[i] = dp[i-1] 如果i是一个偶数,分两种情况讨论,一种是序列中包含1,因此dp[i]=dp[i-1]一 ...

  6. 【数位DP】题集

    1.[HDOJ2089] 题意:求区间内不出现4和62的数的个数 解法:模板题 2.[HDOJ3555] 题意:求区间内不出现49的数的个数 解法:模板题 3.[HDOJ5179] 题意:对于一个十进 ...

  7. JAVA单态设计模式

    核心--在类的内部把构造器私有化,同时在内部产生对象,并通过类.静态方法(static)返回实例化对象的引用   设计模式是在大量的实践总结和理论化之后优选的代码结果,编程风格,以及解决问题的思考方式 ...

  8. return语句的用法

    1.return语句的作用:a.返回一个值,这个值可以是任意类型.b.使程序返回到操作系统(即终止程序)2.java中对于一个函数,不论有没有返回值类型,都可以带有return 语句.但是区别在于,r ...

  9. 3DMAX2016破解教程

    首先,断网. 然后,下载3DMAX2016注册机. 然后,打开已经安装的3DMAX2016,会出现下图,点击激活按钮. 之后,以管理员身份打开3DMAX2016注册机,把申请号复制到注册机里面的请求码 ...

  10. 第二章 持续集成jenkins工具使用之系统基本设置

    Jenkin系统初始化成功后,会进入用户设置页面,设置用户信息后即可进入系统,如果没有设置用户,jenkins系统默认的用户是admin,密码administrator 1.1         Con ...