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

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. 【springmvc+mybatis项目实战】杰信商贸-2.数据库配置

    首先我们来了解项目的架构 我们分别使用了MySql和Oracle数据库,即是异构数据库.我们做到一个平台支持多个数据库.数据库建模我们使用Sybase公司的PowerDesigner(以后简称PD), ...

  2. Click Once使用总结

    做了一个CS结构软件,有十几个用户使用的客户端,因为刚开始试用期间,要不断根据用户使用情况修正问题和添加新功能,所以频繁更新是不可避免的,暂时没有深入去研究软件更新,暂时采取的方式是用户通过FTP自行 ...

  3. NOIP2019普及级别模拟 3.30校模拟

    好吧我还是第一次写这种总结类的玩意… 考场心情…hmm…我没睡醒.是的是这样的,反正题都有两三个看错了或者没看懂… 最关键的是!!我!居!然!把!Freopen!写!在!了!程!序!最!后! 然后就和 ...

  4. 使用深度学习来破解 captcha 验证码(转)

    使用深度学习来破解 captcha 验证码 本项目会通过 Keras 搭建一个深度卷积神经网络来识别 captcha 验证码,建议使用显卡来运行该项目. 下面的可视化代码都是在 jupyter not ...

  5. 共识算法 pos,Dpos

    在之前讲解了比特币中的共识算法pow(proot of work),我们先来简单的回顾一下. 新的交易将会广播给所有节点. 每个节点将都会讲新的交易收集到一个区块中. 每个节点都在为其区块收集困难的工 ...

  6. NFC学习总结

    NFC 学习总结 1.NFC 的基本概念 NFC 是 Near FieldCommunication 的缩写,即距离无线通信技术.由飞利浦公司和索尼公司共同开发的NFC 是一种非接触式识别和互联技术, ...

  7. Where to go from here

    Did you get through all of that content? Congratulations! You've learnt the fundamentals of algorith ...

  8. HDU2376Average distance(树形dp|树上任意两点距离和的平均值)

    思路: 引:如果暴力枚举两点再求距离是显然会超时的.转换一下思路,我们可以对每条边,求所有可能的路径经过此边的次数:设这条边两端的点数分别为A和B,那 么这条边被经过的次数就是A*B,它对总的距离和的 ...

  9. 《剑指offer》---寻找反转数组最小值

    本文算法使用python3实现 1.题目描述:   把一个数组最开始的若干个元素搬到数组的末尾,我们称之为数组的旋转. 输入一个非递减排序的数组的一个旋转,输出旋转数组的最小元素. 例如数组{3,4, ...

  10. C#,Winform 文件的导入导出 File

    1.导入 导入对话框:OpenFileDialog private void sbtnsb_Click(object sender, EventArgs e) { try { OpenFileDial ...