mirror of https://github.com/opencv/opencv.git
Open Source Computer Vision Library
https://opencv.org/
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
126 lines
3.8 KiB
126 lines
3.8 KiB
#ifndef _OPENCV_CASCADECLASSIFIER_H_ |
|
#define _OPENCV_CASCADECLASSIFIER_H_ |
|
|
|
#include <ctime> |
|
#include "traincascade_features.h" |
|
#include "haarfeatures.h" |
|
#include "lbpfeatures.h" |
|
#include "HOGfeatures.h" //new |
|
#include "boost.h" |
|
#include "cv.h" |
|
#include "cxcore.h" |
|
|
|
#define CC_CASCADE_FILENAME "cascade.xml" |
|
#define CC_PARAMS_FILENAME "params.xml" |
|
|
|
#define CC_CASCADE_PARAMS "cascadeParams" |
|
#define CC_STAGE_TYPE "stageType" |
|
#define CC_FEATURE_TYPE "featureType" |
|
#define CC_HEIGHT "height" |
|
#define CC_WIDTH "width" |
|
|
|
#define CC_STAGE_NUM "stageNum" |
|
#define CC_STAGES "stages" |
|
#define CC_STAGE_PARAMS "stageParams" |
|
|
|
#define CC_BOOST "BOOST" |
|
#define CC_BOOST_TYPE "boostType" |
|
#define CC_DISCRETE_BOOST "DAB" |
|
#define CC_REAL_BOOST "RAB" |
|
#define CC_LOGIT_BOOST "LB" |
|
#define CC_GENTLE_BOOST "GAB" |
|
#define CC_MINHITRATE "minHitRate" |
|
#define CC_MAXFALSEALARM "maxFalseAlarm" |
|
#define CC_TRIM_RATE "weightTrimRate" |
|
#define CC_MAX_DEPTH "maxDepth" |
|
#define CC_WEAK_COUNT "maxWeakCount" |
|
#define CC_STAGE_THRESHOLD "stageThreshold" |
|
#define CC_WEAK_CLASSIFIERS "weakClassifiers" |
|
#define CC_INTERNAL_NODES "internalNodes" |
|
#define CC_LEAF_VALUES "leafValues" |
|
|
|
#define CC_FEATURES FEATURES |
|
#define CC_FEATURE_PARAMS "featureParams" |
|
#define CC_MAX_CAT_COUNT "maxCatCount" |
|
#define CC_FEATURE_SIZE "featSize" |
|
|
|
#define CC_HAAR "HAAR" |
|
#define CC_MODE "mode" |
|
#define CC_MODE_BASIC "BASIC" |
|
#define CC_MODE_CORE "CORE" |
|
#define CC_MODE_ALL "ALL" |
|
#define CC_RECTS "rects" |
|
#define CC_TILTED "tilted" |
|
|
|
#define CC_LBP "LBP" |
|
#define CC_RECT "rect" |
|
|
|
#define CC_HOG "HOG" |
|
|
|
#ifdef _WIN32 |
|
#define TIME( arg ) (((double) clock()) / CLOCKS_PER_SEC) |
|
#else |
|
#define TIME( arg ) (time( arg )) |
|
#endif |
|
|
|
class CvCascadeParams : public CvParams |
|
{ |
|
public: |
|
enum { BOOST = 0 }; |
|
static const int defaultStageType = BOOST; |
|
static const int defaultFeatureType = CvFeatureParams::HAAR; |
|
|
|
CvCascadeParams(); |
|
CvCascadeParams( int _stageType, int _featureType ); |
|
void write( cv::FileStorage &fs ) const; |
|
bool read( const cv::FileNode &node ); |
|
|
|
void printDefaults() const; |
|
void printAttrs() const; |
|
bool scanAttr( const std::string prmName, const std::string val ); |
|
|
|
int stageType; |
|
int featureType; |
|
cv::Size winSize; |
|
}; |
|
|
|
class CvCascadeClassifier |
|
{ |
|
public: |
|
bool train( const std::string _cascadeDirName, |
|
const std::string _posFilename, |
|
const std::string _negFilename, |
|
int _numPos, int _numNeg, |
|
int _precalcValBufSize, int _precalcIdxBufSize, |
|
int _numStages, |
|
const CvCascadeParams& _cascadeParams, |
|
const CvFeatureParams& _featureParams, |
|
const CvCascadeBoostParams& _stageParams, |
|
bool baseFormatSave = false ); |
|
private: |
|
int predict( int sampleIdx ); |
|
void save( const std::string cascadeDirName, bool baseFormat = false ); |
|
bool load( const std::string cascadeDirName ); |
|
bool updateTrainingSet( double& acceptanceRatio ); |
|
int fillPassedSamples( int first, int count, bool isPositive, int64& consumed ); |
|
|
|
void writeParams( cv::FileStorage &fs ) const; |
|
void writeStages( cv::FileStorage &fs, const cv::Mat& featureMap ) const; |
|
void writeFeatures( cv::FileStorage &fs, const cv::Mat& featureMap ) const; |
|
bool readParams( const cv::FileNode &node ); |
|
bool readStages( const cv::FileNode &node ); |
|
|
|
void getUsedFeaturesIdxMap( cv::Mat& featureMap ); |
|
|
|
CvCascadeParams cascadeParams; |
|
cv::Ptr<CvFeatureParams> featureParams; |
|
cv::Ptr<CvCascadeBoostParams> stageParams; |
|
|
|
cv::Ptr<CvFeatureEvaluator> featureEvaluator; |
|
std::vector< cv::Ptr<CvCascadeBoost> > stageClassifiers; |
|
CvCascadeImageReader imgReader; |
|
int numStages, curNumSamples; |
|
int numPos, numNeg; |
|
}; |
|
|
|
#endif
|
|
|