opencv训练分类器

一、训练步骤
1.正负样本准备
创建两个文件夹,分别命名为posdata和negdata,posdata保存正样本,negdata保存负样本。再创建一个xml文件夹,用于存放生成的分类器。
正样本:包含待识别检测的物体,且大小必须一样(下面示例选用60*60)
负样本:大小随意,不包含待检测的物体
在这里插入图片描述
2.准备训练工具
将下图opencv安装路径的所有文件复制到正负样本文件夹的同级目录
(若找不到:下方链接下载)
1)csdn
2)网盘:链接:https://pan.baidu.com/s/1lH94cEc4C1f8ikZGuBv16g
提取码:xd5r
在这里插入图片描述
在这里插入图片描述
3.生成正样本描述文件和vec文件
使用cmd进入到posdata的目录,执行

dir /b/s/p/w *.jpg>pos.txt

若为png图片,则将jpg改成png。

在这里插入图片描述
执行完后可在posdata文件夹中找到pos.txt文件,打开使用快捷键ctrl+h,将文件改成如下格式。
参数说明:1表示图片中只有一个待识别物体,0 0 60 60是待识别物体在图片中的位置。若图片中有两个物体,1改成2,位置信息也应该增加一组。
在这里插入图片描述
将pos.txt剪切到与opencv_createsamples.exe文件的同一目录,然后cmd执行下面的命令

opencv_createsamples.exe -vec pos.vec -info pos.txt -num 100 -w 60 -h 60

-num为正样本的数量,-w和-h为正样本的宽和高。pos.vec文件生成后,将pos.txt文件改回原样。
在这里插入图片描述
4、生成负样本描述文件
使用cmd进入negdata文件夹,执行

dir /b/s/p/w *.jpg>neg.txt

若为png图片,则将jpg改成png。
在这里插入图片描述
将pos.txt剪切到与negdata文件夹的同一目录。(负样本不需要vec文件)
5.训练样本
新建traincascade.bat文件(若电脑无法编辑bat文件,可将后缀改成txt,编辑好后再改回bat),在traincascade.bat文件中输入下列内容

opencv_traincascade.exe -data xml -vec pos.vec -bg neg.txt -numPos 100 -numNeg 500 -numStages 20 -w 20 -h 20 -mode ALL 
pause
参数说明
-data训练的分类器的存储目录
-vec正样本文件,由open_createsamples.exe生成,正样本文件后缀名为.vec
-bg负样本说明文件,主要包含负样本文件所在的目录及负样本文件名
-numPos每级分类器训练时所用到的正样本数目,应小于vec文件中正样本的数目
-numNeg每级分类器训练时所用到的负样本数目,可以大于-bg指定的图片数目
-numStages训练分类器的级数,强分类器的个数
-precalcValBufSize缓存大小,用于存储预先计算的特征值,单位MB
-precalcIdxBufSize缓存大小,用于存储预先计算的特征索引,单位MB
-w训练的正样本的宽度
-h训练的正样本的高
-mode值为BASIC、CORE、ALL三种,根据值不同采用不同的Haar特征,BASIC是基本的Haar特征(垂直),CORE是所有的上下Haar特征,ALL是使用所有的Haar特征(包括垂直和45度)
-minHitRate影响每个强分类器阈值,每一级分类器最小命中率,表示每一级强分类器对正样本的的分类准确率

双击bat文件即可开始训练。
二、训练效果
基本能识别出目标物。
优化方案:训练多个分类器,级联使用,如识别人脸,可先检测大体,在检测里面是否有眼睛或者嘴巴,加强判断,效果更佳。
在这里插入图片描述

  • 5
    点赞
  • 22
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值