利用Haar特征,结合级联分类器进行花朵检测,整体思路分为5大步:1 准备昙花、非昙花样本集 2 计算特征值和积分图 3 挑选最优分类器 4 利用Adaboost把这些分类器训练成一个强分类器 5 级联,也就是所谓的强强联手。本文选用窗口是20×20,从这些很多的特征,筛选出有用的特征(即最优弱分类器),然后将这些最优弱分类器训练成一个弱分类器,最后将强分类器进行级联。
集成开发环境(IDE):Anaconda 4.3.30 Python 3.5.3 Opencv 4.5.0
方法:
opencv_createsamples,opencv_traincascade,haar特征+cascade分类器
目标检测分为三个步骤:样本的创建 训练分类器 利用训练好的分类器进行目标检测。
本文花朵图片的来源有3个:1 在网上一张一张下载图片 2 按关键字从百度图片上爬取图片 3 自己拍摄的图片
样本的创建
1 首先,把照片的原图放在pos原图和neg原图文件夹下,把经过美图秀秀软件修改后的图片放在pos和neg文件夹下。图片的格式是jpg,把图片的长,宽变成20,20,把昙花当做正样本,把除昙花以外的花朵当作负样本,其中,正样本有350张,负样本有8367张, pos和neg分别是图片的正样本,负样本,pos正样本如图1所示。
neg负样本如图所示。
2 训练分类器
把Opencv_createsamples.exe和Opencv_traincascade.exe放到同一文件夹下面
3 生成正样本描述文件和负样本描述文件
使用cmd进入到pos目录下,执行
执行完后可在pos文件夹中找到pos.txt,打开记事本,删去pos.txt,将文件改成如下格式。
参数说明:1 表示图片中只有一个要识别的目标。0 0 20 20是待识别物体在图片中的位置
使用cmd进入到neg目录下,执行
生成负样本描述文件,删掉neg.txt
4 生vec文件
使用cmd进入opencv_createsamples.exe目录下,执行
opencv_createsamples.exe -vec pos.vec -info pos/pos.txt -bg neg/neg.txt -w 20 -h 20
参数分析:
-vec pos.exe 指定生成的文件,最后生成的是pos.vec
-info pos\pos.txt 图片目标描述文件,本文把图片放在pos\pos.txt
-bg neg\neg.txt 背景图片描述文件,本文把图片放在beg\neg.txt
-w 训练样本的宽 本文训练样本的宽设置为20
-h 训练样本的高 本文训练样本的高设置为20
5 训练样本
使用cmd进入opencv_traincascade.exe 目录下,