- 1、本文档共11页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
HYPERLINK /pakfahome/p/3611303.html 对OpenCV中Haar特征CvHaarClassifierCascade等结构理解
首先说一下这个级联分类器,OpenCV中级联分类器是根据VJ 04年的那篇论文(Robust Real-Time Face Detection)编写的,查看那篇论文,知道构建分类器的步骤如下:
1、根据haar-like特征训练多个弱分类器
2、使用adaboost算法将多个弱分类器组合成一个强分类器
3、最终的分类器是由多个强分类器级联而成
下面这幅图是弱分类器组合成强分类器的示意图(图片来源于网络):
下面这张是多个强分类器级联的示意图(图片来源于网络):
在了解了级联分类器是怎么一回事后,我们来看一看OpenCV里面级联分类器的结构
在调用OpenCV中的级联分类器对目标进行分类时,都会将一个训练好的分类器(一个训练好的.xml文件)读入到一个CvHaarClassifierCascade结构中,如下:
?1?CvHaarClassifierCascade* cascade = (CvHaarClassifierCascade*)cvLoad(?haarcascade_frontalface_alt.xml,?0,?0,?0?);??
那么这个CvHaarClassifierCascade结构体里面的内容都有哪些呢?
1 typedef struct CvHaarClassifierCascade
2 {
3 int flags; /* 标志位 */
4 int count; /* 分级分类器中强分类器的数量 */
5 CvSize orig_window_size; /* 训练中原始目标的大小 */
6
7 /* these two parameters are set by cvSetImagesForHaarClassifierCascade */
8 CvSize real_window_size; /* 待检测物体的大小 */
9 double scale; /* Haar块缩放的尺寸 */
10
11 CvHaarStageClassifier* stage_classifier; /* 定义强分类器数组 */
12 CvHidHaarClassifierCascade* hid_cascade;
13 }CvHaarClassifierCascade;
第一个flags,还不是很清楚,在debug模式下,flags=1112539136(好吧,这个值很诡异),我也不是很清楚
第二个count,表示整个分级分类器中强分类器的数量,即最后参与级联的强分类器的个数
第三个orig_window_size,表示的是在训练时用的正样本的尺寸,OpenCV中的尺寸是20x20
第四个和第五个,注释中说了,这两个参数需要自己设置,具体每个参数看注释
第六个stage_classifier,是强分类器指针,指向一个强分类器数组,之前的count是多少,那么此处的强分类器就有多少
最后一个hid_cascade,还不是很清楚
下面来看上面第六个参数的强分类器结构体
1 typedef struct CvHaarStageClassifier
2 {
3 int count; /* number of classifiers in the battery 构成强分类器的弱分类器的数量*/
4 float threshold; /* threshold for the boosted classifier 叠加分类器的阈值*/
5 CvHaarClassifier* classifier; /* array of classifiers 定义分类器数组*/
6 /* these fields are used for organizing trees of stage classifiers,
7 rather than just stright cascades */
8 int next;
9 int child;
10 int parent;
11 }CvHaarStageClassifier;
第一个count,表示该强分类器中,弱分类器的数量,即该强分类器由多少个弱分类器组成
第二个threshold,叠加分类器的阈值(好吧。。这个我也不知道)
第三个c
文档评论(0)