4 #include "_imagestorage.h"
10 typedef uint64 ccounter_t;
11 #define CCOUNTER_DIV(cc0, cc1) ( ((cc1) == 0) ? 0 : ( ((double)(cc0))/(double)(int64)(cc1) ) )
13 #define CV_SUM_OFFSETS( p0, p1, p2, p3, rect, step ) \
15 (p0) = (rect).x + (step) * (rect).y; \
17 (p1) = (rect).x + (rect).width + (step) * (rect).y; \
19 (p2) = (rect).x + (step) * ((rect).y + (rect).height); \
20 /* (x + w, y + h) */ \
21 (p3) = (rect).x + (rect).width + (step) * ((rect).y + (rect).height);
23 #define CV_TILTED_OFFSETS( p0, p1, p2, p3, rect, step ) \
25 (p0) = (rect).x + (step) * (rect).y; \
26 /* (x - h, y + h) */ \
27 (p1) = (rect).x - (rect).height + (step) * ((rect).y + (rect).height);\
28 /* (x + w, y + w) */ \
29 (p2) = (rect).x + (rect).width + (step) * ((rect).y + (rect).width); \
30 /* (x + w - h, y + w + h) */ \
31 (p3) = (rect).x + (rect).width - (rect).height \
32 + (step) * ((rect).y + (rect).width + (rect).height);
34 //-------------------------------------- Params ---------------------------------------------
38 CvParams() : name( "params" ) {}
39 virtual ~CvParams() {}
41 virtual void write( CvFileStorage* fs ) const = 0;
42 virtual bool read( CvFileStorage* fs, CvFileNode* node ) = 0;
45 virtual void printDefaults()
46 { printf( "--%s--\n", name ); };
47 virtual void printAttrs(){};
48 virtual bool scanAttr( const char* prmName, const char* val ){ return false; }
52 //---------------------------------- FeatureParams ----------------------------------------
53 struct CvFeatureParams : CvParams
56 CvFeatureParams( CvSize _winSize );
57 virtual ~CvFeatureParams()
60 virtual void set( const CvFeatureParams* fp );
62 virtual void write( CvFileStorage* fs ) const;
63 virtual bool read( CvFileStorage* fs, CvFileNode* node );
65 int maxCatCount; // 0 in case of numerical features
68 //---------------------------------- Features ----------------------------------------------
73 virtual ~CvFeature() {}
74 virtual void write( CvFileStorage* fs ) const = 0;
77 //---------------------------------- CascadeData ----------------------------------------
79 class CvCascadeClassifier;
85 virtual ~CvCascadeData();
87 virtual void setData( CvCascadeClassifier* _cascade,
88 const char* _vecFileName, const char* _bgFileName,
89 int _numPos, int _numNeg, const CvFeatureParams* _featureParams );
91 virtual void generateFeatures() = 0;
92 virtual float calcFeature( int featureIdx, int sampleIdx ) = 0;
94 static void calcNormfactor( const CvMat* _sum, const CvMat* _sqSum, float& _normFactor );
96 virtual bool updateForNextStage( double& acceptanceRatio );
98 int getMaxCatCount() const { return featureParams->maxCatCount; }
99 CvSize getWinSize() const { return winSize; }
100 int getNumFeatures() const { return numFeatures; }
101 int getNumSamples() const { return numImg; }
102 float getCls( int sampleIdx ) const;
103 const CvMat* getCls() const { return cls; }
105 virtual void writeFeature( CvFileStorage* fs, int fi ); // for old file format
106 virtual void writeFeatures( CvFileStorage* fs, const CvMat* featureMap );
109 virtual int fillPassedSamles( int first, int count, bool isPositive, int64& consumed ) = 0;
112 int numPos, numNeg, numImg;
115 CvMat* cls; /* classes. 1.0 - object, 0.0 - background */
117 CvCascadeClassifier* cascade;
118 const CvFeatureParams* featureParams;
119 CvImageReader* imgreader;
120 CvFeature** features;