icvInitCARTHaarClassifier
2015-06-26 14:42
246 查看
在介绍icvInitCARTHaarClassifier以前有必要先介绍一下它括号里面的三个参数,CvCARTHaarClassifier,CvCARTClassifier和CvIntHaarFeatures。详情请参考我的另外两篇博文。CvIntHaarFeatures和CvCARTClassifier和CvCARTHaarClassifier。
1 CvCARTHaarClassifier,CvCARTClassifier和CvIntHaarFeatures
1 CvCARTHaarClassifier,CvCARTClassifier和CvIntHaarFeatures
typedef struct CvCARTClassifier { CV_CLASSIFIER_FIELDS() int count; //分类回归树节点的个数 /* internal nodes (each array of <count>elements) */ int*compidx; //这个弱分类器对应的特征编号。即这个弱分类器是第compidx特征产生的 float*threshold; //阈值 int*left; // 非叶子节点的左子节点序号(叶子节点为负数,非叶子节点为正数) int*right; // 非叶子节点的右子节点序号(叶子节点为负数,非叶子节点为正数) /* leaves (array of<count>+1 elements) */ float*val; //输出,当特征值xi输入是在threshold[0]的左边,则输出val[0],否则输出val[1]; }CvCARTClassifier; <pre name="code" class="cpp"> typedef struct CvCARTHaarClassifier { CV_INT_HAAR_CLASSIFIER_FIELDS() int count; //包含弱分类器的个数 int* compidx; //这个弱分类器对应的特征编号。即这个弱分类器是第compidx特征产生的 CvTHaarFeature* feature; //弱分类器对应的特征的特征坐标 CvFastHaarFeature* fastfeature;//弱分类器对应的特征的特征坐标 float* threshold; //该弱分类器的阈值 int* left; //同上 int* right; float* val; } CvCARTHaarClassifier; <pre name="code" class="cpp"> typedef struct CvIntHaarFeatures { CvSize winsize; //采特征的窗口的大小,即样本图像的大小。 int count; //总特征的个数。 CvTHaarFeature* feature; //指向所有的Haar特征。 CvFastHaarFeature* fastfeature; } CvIntHaarFeatures;
2 icvInitCARTHaarClassifier
有了上面对三个结构体的介绍,就容易看懂icvInitCARTHaarClassifier参数传递的含义了。/* *icvInitCARTHaarClassifier *初始化分类回归树haar分类器函数 *作用:把括号里的参数进行传递,也就是把后两个参数都传递给第一个参数 *具体来说就是,首先把intHaarFeatures 的特征按照cart中compidx[i]的顺序传递给carthaar(包括haar特征和快速haar特征); *然后,再把cart中的参数传递给carthaar。 */ void icvInitCARTHaarClassifier( CvCARTHaarClassifier* carthaar, CvCARTClassifier* cart, CvIntHaarFeatures* intHaarFeatures ) { int i; for( i = 0; i < cart->count; i++ ) //对于一棵树(carthaar)的cart->count个节点进行初始化 { carthaar->feature[i] = intHaarFeatures->feature[cart->compidx[i]]; //初始化carthaar的feature,即把intHaarFeatures的特征传递给carthaar carthaar->fastfeature[i] = intHaarFeatures->fastfeature[cart->compidx[i]]; //初始化carthaar的fastfeature,即把intHaarFeatures的快速特征传递给carthaar carthaar->threshold[i] = cart->threshold[i]; //初始化阈值,即把cart的阈值传递给carthaar carthaar->left[i] = cart->left[i]; //初始化carthaar的左分支节点 carthaar->right[i] = cart->right[i]; //初始化carthaar的右分支节点 carthaar->val[i] = cart->val[i]; //初始化carthaar的输出值 carthaar->compidx[i] = cart->compidx[i]; } carthaar->count = cart->count; carthaar->val[cart->count] = cart->val[cart->count]; }
相关文章推荐
- js创建制定制定行数和列数的表格以及删除制定行和列
- Linux下安装mariadb(非源码包)
- C#委托与事件讲解(一)(二)
- 转:批处理分割字符串
- profile与bashrc
- 安卓屏蔽home键
- 汇编语言:实验一 查看CPU和内存,用汇编指令和机器指令编程
- profile与bashrc 分类: Ubuntu学习笔记 2015-06-26 14:42 146人阅读 评论(0) 收藏
- 第二章 Spring MVC入门 —— 跟开涛学SpringMVC
- 项目常见函数封装,基于Jquery
- iOS-检测监听网络状态(WIFI、2G/3G/4G)
- 建立超级隐藏用户账户
- intellij idea常用快捷键
- win7 64位系统怎么查看串口号?
- MiniTwitterSimulate记住密码
- 几种常见的排序算法,选择排序,冒泡排序,希尔排序,堆排序,快速排序,归并排序,基数排序的比较
- Android批量图片加载经典系列——Volley框架实现多布局的新闻列表
- 读取jar包中图片文件,并转换为BufferImage
- 安卓电源键
- 基于MMSeg算法的中文分词类库