人脸检测源码解析——2、概要流程

本文主要解析CvCascadeClassifier的train函数,概述了人脸检测分类器的训练流程,包括Adaboost和Haar特征等关键步骤,为理解OpenCV中的人脸检测算法提供了概要性的介绍。
摘要由CSDN通过智能技术生成

        跟进CvCascadeClassifier::train函数的代码,该函数里面包含了分类器训练的完整流程,已经在重要的位置做了注释,带有括号编号的(X)为重要步骤,后面将逐一详细解析。这里我们主要是对整体流程进行把握,不必深入细节。

bool CvCascadeClassifier::train( const string _cascadeDirName,
                                const string _posFilename,
                                const string _negFilename,
                                int _numPos, int _numNeg,
                                int _precalcValBufSize, int _precalcIdxBufSize,
                                int _numStages,
                                const CvCascadeParams& _cascadeParams,
                                const CvFeatureParams& _featureParams,
                                const CvCascadeBoostParams& _stageParams,
                                bool baseFormatSave )
{
    // Start recording clock ticks for training time output
    const clock_t begin_time = clock();

    if( _cascadeDirName.empty() || _posFilename.empty() || _negFilename.empty() )
        CV_Error( CV_StsBadArg, "_cascadeDirName or _bgfileName or _vecFileName is NULL" );

	// 训练中间数据和最终分类器文件存放的目录
	string dirName;
	if (_cascadeDirName.find_last_of("/\\") == (_cascadeDirName.length() - 1) )
		dirName = _cascadeDirName;
	else
		dirName = _cascadeDirName + '/';
	// 训练弱分类器使用的正负样本的数目
	numPos = _numPos;
	numNeg = _numNeg;
	// 训练的层级数,也就是强分类器数目
	numStages = _numStages;
	// (1)创建图片读取器,设置正样本vec文件路径,从中读取正样本图片;负样本图片的文件名列表&
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值