windows环境下使用opencv训练级联分类器traincascade

基于opencv3.4.1(https://sourceforge.net/projects/opencvlibrary/files/opencv-win/3.1.0/opencv-3.1.0.exe/download)+contrib(https://github.com/opencv/opencv_contrib/releases),下载相应版本。cmake下载msi版本。(https://cmake.org/files/)

一、配置过程

1.打开cmake。

build2文件夹自己建。选择环境,本人vs2015,x64平台。点configure后。等待结束。

添加contrib文件夹路径,上面一个打勾。

再点击configure,结束后,点击Generate,结束后,点击Open Project.

2.

Debug X64

windows环境下使用opencv训练级联分类器traincascade_第1张图片右击解决方案‘Opencv’,点生成解决方案。

3.找到CMakeTargets中的INSTALL,然后右键选择“仅限于项目”-->“仅生成INSTALL”:

二、Opencv的配置

打开vs2015,新建空文件。

属性管理器:

Debug|x64

Microsoft.Cpp.x64.user属性

1.包含目录:

D:\Program Files\opencv\build2\install\include
D:\Program Files\opencv\build2\install\include\opencv

D:\Program Files\opencv\build2\install\include\opencv2

2.库目录:

D:\Program Files\opencv\build2\install\x64\vc14\lib

3.链接器->输入

opencv_world341d.lib
opencv_img_hash341d.lib

三、利用opencv训练基于Haar特征、LBP特征、Hog特征的分类器cascade.xml

opencv_createsamplesd.exe 
opencv_traincascaded.exe

这两个exe执行程序的路径为:

D:\Program Files\opencv\build2\install\x64\vc14\bin

1、搜集正样本、负样本

正样本:只含有目标的局部图(若是全图,则需要把目标截取出来,比如训练人脸,则把人脸从含有人脸的图片中截取出来,尺寸要一致),且背景不要太过复杂,灰度图

正样本大小:20*20(一般用于Haar特征),24*24(LBP特征)

正样本数量:一般大于等于2000

负样本:不含目标的任何图片,灰度图

负样本大小:60*60

负样本数量:一般大于等于5000

注:正样本尺寸越小,训练的时间越短,但正样本的尺寸要保证小于负样本的尺寸

2、在路径D:\Program Files\opencv\build2\install\x64\vc14\bin下新建3个文件夹:pos、neg、xml

3、将正样本、负样本分别复制到pos文件夹、neg文件夹

4、cmd打开dos命令窗口,进入pos路径下

输入以下命令,生成pos.txt 
dir/b >pos.txt

生成pos.txt后,将png替换为: 
png 1 0 0 24 24

删除最后一行的pos.txt

5、同样进入neg路径下

  • 输入以下命令,生成neg.txt 
    dir/b >neg.txt

生成neg.txt后,将neg.txt中的图片名字前面加入路径: 
neg/

删除最后一行的neg.txt

6、进入路径D:\Program Files\opencv\build2\install\x64\vc14\bin,即pos、neg、xml所在的路径,输入以下命令,生成pos.vec

opencv_createsamplesd.exe -info pos\pos.txt -vec pos.vec -bg neg\neg.txt -num 2000 -w 24 -h 24
1
7、输入以下命令开始训练
opencv_traincascaded.exe -data xml -vec pos.vec -bg neg\neg.txt -numPos 1800 -numNeg 4000 -numStages 20 -featureType LBP -w 24 -h 24

8、训练结束后,xml文件夹下的cascade.xml文件就是训练好的分类器

 

 

 

你可能感兴趣的:(OpenCV)