87 lines
		
	
	
		
			3.5 KiB
		
	
	
	
		
			C++
		
	
	
	
	
	
			
		
		
	
	
			87 lines
		
	
	
		
			3.5 KiB
		
	
	
	
		
			C++
		
	
	
	
	
	
| #ifndef _OPENCV_BOOST_H_
 | |
| #define _OPENCV_BOOST_H_
 | |
| 
 | |
| #include "traincascade_features.h"
 | |
| #include "ml.h"
 | |
| 
 | |
| struct CvCascadeBoostParams : CvBoostParams
 | |
| {
 | |
|     float minHitRate;
 | |
|     float maxFalseAlarm;
 | |
| 
 | |
|     CvCascadeBoostParams();
 | |
|     CvCascadeBoostParams( int _boostType, float _minHitRate, float _maxFalseAlarm,
 | |
|                           double _weightTrimRate, int _maxDepth, int _maxWeakCount );
 | |
|     virtual ~CvCascadeBoostParams() {}
 | |
|     void write( cv::FileStorage &fs ) const;
 | |
|     bool read( const cv::FileNode &node );
 | |
|     virtual void printDefaults() const;
 | |
|     virtual void printAttrs() const;
 | |
|     virtual bool scanAttr( const std::string prmName, const std::string val);
 | |
| };
 | |
| 
 | |
| struct CvCascadeBoostTrainData : CvDTreeTrainData
 | |
| {
 | |
|     CvCascadeBoostTrainData( const CvFeatureEvaluator* _featureEvaluator,
 | |
|                              const CvDTreeParams& _params );
 | |
|     CvCascadeBoostTrainData( const CvFeatureEvaluator* _featureEvaluator,
 | |
|                              int _numSamples, int _precalcValBufSize, int _precalcIdxBufSize,
 | |
|                              const CvDTreeParams& _params = CvDTreeParams() );
 | |
|     virtual void setData( const CvFeatureEvaluator* _featureEvaluator,
 | |
|                           int _numSamples, int _precalcValBufSize, int _precalcIdxBufSize,
 | |
|                           const CvDTreeParams& _params=CvDTreeParams() );
 | |
|     void precalculate();
 | |
| 
 | |
|     virtual CvDTreeNode* subsample_data( const CvMat* _subsample_idx );
 | |
| 
 | |
|     virtual const int* get_class_labels( CvDTreeNode* n, int* labelsBuf );
 | |
|     virtual const int* get_cv_labels( CvDTreeNode* n, int* labelsBuf);
 | |
|     virtual const int* get_sample_indices( CvDTreeNode* n, int* indicesBuf );
 | |
| 
 | |
|     virtual void get_ord_var_data( CvDTreeNode* n, int vi, float* ordValuesBuf, int* sortedIndicesBuf,
 | |
|                                   const float** ordValues, const int** sortedIndices, int* sampleIndicesBuf );
 | |
|     virtual const int* get_cat_var_data( CvDTreeNode* n, int vi, int* catValuesBuf );
 | |
|     virtual float getVarValue( int vi, int si );
 | |
|     virtual void free_train_data();
 | |
| 
 | |
|     const CvFeatureEvaluator* featureEvaluator;
 | |
|     cv::Mat valCache; // precalculated feature values (CV_32FC1)
 | |
|     CvMat _resp; // for casting
 | |
|     int numPrecalcVal, numPrecalcIdx;
 | |
| };
 | |
| 
 | |
| class CvCascadeBoostTree : public CvBoostTree
 | |
| {
 | |
| public:
 | |
|     virtual CvDTreeNode* predict( int sampleIdx ) const;
 | |
|     void write( cv::FileStorage &fs, const cv::Mat& featureMap );
 | |
|     void read( const cv::FileNode &node, CvBoost* _ensemble, CvDTreeTrainData* _data );
 | |
|     void markFeaturesInMap( cv::Mat& featureMap );
 | |
| protected:
 | |
|     virtual void split_node_data( CvDTreeNode* n );
 | |
| };
 | |
| 
 | |
| class CvCascadeBoost : public CvBoost
 | |
| {
 | |
| public:
 | |
|     virtual bool train( const CvFeatureEvaluator* _featureEvaluator,
 | |
|                         int _numSamples, int _precalcValBufSize, int _precalcIdxBufSize,
 | |
|                         const CvCascadeBoostParams& _params=CvCascadeBoostParams() );
 | |
|     virtual float predict( int sampleIdx, bool returnSum = false ) const;
 | |
| 
 | |
|     float getThreshold() const { return threshold; }
 | |
|     void write( cv::FileStorage &fs, const cv::Mat& featureMap ) const;
 | |
|     bool read( const cv::FileNode &node, const CvFeatureEvaluator* _featureEvaluator,
 | |
|                const CvCascadeBoostParams& _params );
 | |
|     void markUsedFeaturesInMap( cv::Mat& featureMap );
 | |
| protected:
 | |
|     virtual bool set_params( const CvBoostParams& _params );
 | |
|     virtual void update_weights( CvBoostTree* tree );
 | |
|     virtual bool isErrDesired();
 | |
| 
 | |
|     float threshold;
 | |
|     float minHitRate, maxFalseAlarm;
 | |
| };
 | |
| 
 | |
| #endif
 | 
