OpecnCV训练分类器详细整理

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

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 是该文件的地址

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

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

时间: 2024-12-13 15:08:51

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

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

如需转载请注明本博网址:http://blog.csdn.net/ding977921830/article/details/47733363. 一  训练框架 训练人脸检測分类器须要三个步骤: (1) 准备正负样本集,分别放到两个目录里. 我使用的是麻省理工的那个人脸库.大家能够网上搜一下. (2)把正样本集生成正样本描写叙述文件(*.vec),把负样本集生成负样本集合文件.详细怎么操作请參考我博客中的另外两篇文章,各自是http://blog.csdn.net/ding977921830/a

openCV训练分类器是一些错误及解决办法

昨天看了一天的opencv训练分类器的资料,想自己试试.经过昨天一天的折腾终于成功的训练出了自己的分类器,虽然效果不好,但是是个好的开端.在整个过程中我遇到了很多问题,在这里和大家分享一下,希望对你有帮助. 1.正样本的创建过程基本上按照以下步骤: 1) 制作一个正样本描述文件,用于描述正样本文件名(包括绝对路径或相对路径),正样本数目以及各正样本在图片中的位置和大小.典型的正样本描述文件如下: face_100/face00001.bmp 1 0 0 20 20 face_100/face00

常见Android面试题及答案(详细整理)

常见Android面试题及答案(详细整理) 1. 请描述一下Activity 生命周期. 答: 如下图所示.共有七个周期函数,按顺序分别是: onCreate(), onStart(), onRestart(), onResume(), onPause(),onStop(), onDestroy(). onCreate(): 创建Activity时调用,设置在该方法中,还以Bundle的形式提供对以前存储的任何状态的访问. onStart(): Activity变为在屏幕上对用户可见时调用. o

opencv训练分类器样本处理

分类器的训练以分为以下三部进行: 1. 样本的创建 2. 训练分类器 3. 利用训练好的分类器进行目标检测. 对检测物体要确定其属性:是否为绝对刚性的物体,也就是检测的目标是一个固定物体,没有变化(如特定公司的商标),这样的物体只要提供一份样本就可以进行训练. 但绝大数时候我们想进行训练的目标是非绝对刚性的物体,如对人的检测,包括人脸识别.手势识别. 样本:分为正样本---------负样本 正样本处理步骤: 所谓所谓正样本就是只包含检测目标的图片(最好背景一致),对于这我个人认为最好是检测目标

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

训练分类器 目前为止,你已经知道如何定义神经网络.计算损失和更新网络的权重.现在你可能在想,那数据呢? What about data? 通常,当你需要处理图像.文本.音频或者视频数据时,你可以使用标准Python包来将数据导入到numpy 数组中.然后再将数组转换成torch.Tensor. 对于图像,可用的包有:Pillow.OpenCV 对于音频,可用的包有:scipy和librosa 对于文本,无论是基于原始的Python或Cython的加载,或是NLTK和SpaCy都是可以的. 对于视

SVM+HOG特征训练分类器

#1,概念 在机器学习领域,支持向量机SVM(Support Vector Machine)是一个有监督的学习模型,通常用来进行模式识别.分类.以及回归分析. SVM的主要思想可以概括为两点:⑴它是针对线性可分情况进行分析,对于线性不可分的情况,通过使用非线性映射算法将低维输入空间线性不可分的样本转化为高维特征空间使其线性可分,从而 使得高维特征空间采用线性算法对样本的非线性特征进行线性分析成为可能: 方向梯度直方图(Histogram of Oriented Gradient, HOG)特征是

详细整理:UITableView优化技巧

最近在微博上看到一个很好的开源项目VVeboTableViewDemo,是关于如何优化UITableView的.加上正好最近也在优化项目中的类似朋友圈功能这块,思考了很多关于UITableView的优化技巧,相信这块是难点也是痛点,所以决定详细的整理下我对优化UITableView的理解. UITableView作为iOS开发中最重要的控件之一,其中的实现原理很是考究.Apple在这块的优化水平直接决定了iOS的体验能甩安卓几条街,哈哈,扯淡扯多了...好了,废话不多说,直接进入主题.首先来谈谈

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

原文:http://www.cocoachina.com/ios/20150602/11968.html 最近在微博上看到一个很好的开源项目VVeboTableViewDemo,是关于如何优化UITableView的.加上正好最近也在优化项目中的类似朋友圈功能这块,思考了很多关于UITableView的优化技巧,相信这块是难点也是痛点,所以决定详细的整理下我对优化UITableView的理解. UITableView作为iOS开发中最重要的控件之一,其中的实现原理很是考究.Apple在这块的优化

使用opencv训练分类器时,traincascade训练报错:Train dataset for temp stage can not be filled.解决方法

opencv分类器训练中,出错一般都是路径出错,例如, 1.opencv_traincascade.exe路径 2.负样本路径文件,neg.dat中的样本前路径是否正确 3.移植到别的电脑并修改完路径后,最好重新生成正样本描述文件,pos.vec 4.同时修改cmd命令中的相关路径 知识付费时代,觉得对您有帮助的,别忘了打赏,附微信收款码 原文地址:https://www.cnblogs.com/runningsoybean/p/10420224.html