使用OpenCV的Haar特征训练身份证级联分类器
以下是我参考的几个人脸分类器的文章:
http://blog.csdn.net/yangleo1987/article/details/52883864
http://m.blog.csdn.net/duhaomin/article/details/10155813
http://blog.csdn.net/autoliuweijie/article/details/51911289
训练工作主要分为如下几步:
- 配置训练环境
- 制作训练数据集
- 生成正样本描述文件(.vec)
- 训练身份证分类器
- 使用分类器进行身份证识别分类
配置训练环境
训练过程主要依靠OpenCV自带的两个可执行程序opencv_createsamples.exe和opencv_haartraining.exe操作完成的。可以直接下载我已经配置好的文件进行训练。文件地址为:http://download.csdn.net/download/u010782875/10033202
文件目录如下:
id_24x16_10目录:新建的一个目录,存放之后训练生成的分类器文件
negdata目录:存放负样本的目录
posdata目录:存放正样本的目录
negdata.txt:负样本的文件路径
posdata24x16.txt:正样本的文件路径
posdata24x16.vec:生成的正样本描述文件
opencv_createsamples.exe:生成正样本描述文件的可执行程序
opencv_haartraining.exe:训练样本的可执行程序
制作训练数据集
将要训练的正样本放入posdata目录,这里为身份证图片,像素大小为24x16(经多次尝试该尺寸效果最佳);将负样本放入negdata目录下,负样本的像素尺寸要大于正样本,正负样本比例1:3效果最佳。我这里使用了110张正样本和300张负样本。
接下来需要正负样本的文件路径,用于训练中找到每个样本。进入正负样本目录,新建一个文本文档num.bat,内容如下。
双击运行后生成当前图片的绝对路径,然后将正样本的路径格式进行如下替换(负样本路径文件可不做修改):
将绝对路径改为相对路径,然后添加的1代表个数,后面四个分别表示样本的left top width height
生成正样本描述文件
打开cmd.exe,进入上述目录,然后运行指令:opencv_createsamples.exe -info posdata24x16.txt -vec posdata24x16.vec -num 110 -w 24 -h 16
-info 样本说明文件
-vec 正样本描述文件的名字及路径
-num 样本数量
-w-h 样本尺寸大小
执行结束后将生成正样本描述文件posdata24x16.vec
训练身份证分类器
接着执行指令:opencv_haartraining.exe -data id_24x16_10 -vec posdata24x16.vec -bg negdata.txt -npos 110 -nneg 300 -nstages 10 -nsplits 1 -sym -w 24 -h 16 -mode all -mem 1024
这里用到了OpenCV自带的工具opencv_haartraining.exe,该工具封装了haar特征提取以及adaboost分类器训练过程,并合并各级分类器成为最终的xml文件
-data 指定生成的文件目录,用于存放各级分类器文件
-vec 正样本描述文件
-bg 负样本路径文件
-npos 每个阶段用来训练的正样本数目
-nneg 每个阶段用来训练的负样本数目
-nstages 指定训练层数,层数越高,识别粒度越小,耗时越长
-nsplits 分裂子节点数目,1表示使用简单地stump classifier分类
-sys 后面不用跟其他参数,用于指定目标对象是否垂直对称
-mode all指定haar特征的种类,basic仅仅使用垂直特征,all表示使用垂直特征以及45度旋转特征
-mem 表示允许使用计算机的1024M内存进行训练
运行结束后,目录下会生成最终的xml文件
使用分类器进行身份证识别分类
将生成的xml文件放到相关项目中(这里放在安卓客户端验证),分类结果如下:
使用OpenCV的Haar特征训练身份证级联分类器相关推荐
- OpenCV学习笔记(三十一)——让demo在他人电脑跑起来 OpenCV学习笔记(三十二)——制作静态库的demo,没有dll也能hold住 OpenCV学习笔记(三十三)——用haar特征训练自己
OpenCV学习笔记(三十一)--让demo在他人电脑跑起来 这一节的内容感觉比较土鳖.这从来就是一个老生常谈的问题.学MFC的时候就知道这个事情了,那时候记得老师强调多次,如果写的demo想在人家那 ...
- 照片美妆---基于Haar特征的Adaboost级联人脸检测分类器
本文转载自张雨石http://blog.csdn.net/stdcoutzyx/article/details/34842233 基于Haar特征的Adaboost级联人脸检测分类器 基于Haar特征 ...
- opencv 使用SVM+HOG训练行人检测分类器(INRIA Person Dataset训练集)
目录 1.训练过程(即代码流程) 2.模型及结果优缺点分析 3.模型建立中发现的问题及改进方法 4.行人检测OpenCv 代码(C++) 1.训练过程(即代码流程) 1. 准备训练样本集合: 包括正样 ...
- opencv学习笔记——自己训练人脸识别分类器
在使用opencv自带的分类器haarcascade_frontalface_alt.xml进行人脸识别的基础认识后,决定自己训练一个分类器看一下效果.该过程大致可分为三个阶段:样本采集.分类器训练和 ...
- 【OpenCV】车辆识别 目标检测 级联分类器 C++ 案例实现
目录 前言 一.目标检测技术 二.样本采集工作原理 三.创建自己的级联分类器 Step1:准备好样本图像 Step2:环境配置(OpenCV win10) Step3:设置路径 Step4:实现样本数 ...
- 利用OpenCV的Haar特征目标检测方法进行人脸识别的尝试(一)
一.前言 由于还处于学习阶段,大多数内容都是从网上学习借鉴的,重复的内容就不多赘述,只是将自己的经验和想法分享出来.感觉不错的学习资源如下 http://www.cnblogs.com/tornado ...
- 利用OpenCV的级联分类器类CascadeClassifier和Haar特征实现人脸区域的检测
级联分类器是将若干个分类器进行连接,从而构成一种多项式级的强分类器.级联分类器使用前要先进行训练,怎么训练呢?用目标的特征值去训练,对于人脸来说,通常使用Haar特征进行训练. Haar特征是由M.O ...
- haar分类器详解(Haar特征,积分图,adaboost算法,筛选式级联分类器),DCG介绍 --文献阅读报告《基于素描对视频的人脸识别研究》
基于素描对视频的人脸识别--haar分类器详解,haar特征,adaboost,级联强分类器,积分图,DCG 背景 算法总体流程 1.预处理--识别出人脸并将人脸图像标准化 haar特征 积分图--加 ...
- Haar特征类有哪些最新发表的毕业论文呢?
一.总体简介 Haar特征的相关文献在2006年到2020年内共计132篇,主要集中在自动化技术.计算机技术.无线电电子学.电信技术.公路运输 等领域,其中期刊论文100篇.会议论文4篇.专利文献28 ...
最新文章
- 其他算法-高斯混合模型
- python之6-3嵌套函数
- javascript 常用校验代码 2
- Spring5源码 - 05 invokeBeanFactoryPostProcessors 源码解读_3细说invokeBeanDefinitionRegistryPostProcessors
- Stanford机器学习笔记-5.神经网络Neural Networks (part two)
- smooth_L1_loss_layer.cpp:28] Check failed: bottom[0]-channels() == bottom[1]-channels() (12 vs. 84
- 全地球的水也没办法将这个“特殊”的瓶子装满!
- oracle的主目录怎么删除,删除oracle数据库卸载
- C#LeetCode刷题之#441-排列硬币(Arranging Coins)
- [转]setTimeout() 函数未定义错误
- SVN同步分支代码到主干
- Java生成、解析二维码方案以及代码实现
- utils工具 常见函数
- 2021-2027全球及中国气提系统行业研究及十四五规划分析报告
- 【安路FPGA】FPGA开发日记(一)
- 如何去除word中的空行
- Mac 下终端运行C++
- 安卓android获取存储路径,Android系统的手机文件夹目录详解
- 动态链接库DLL是什么?
- 中国降低京沪高铁票价和速度