00001 #ifndef FOREGROUNDDETECTOR_H 00002 #define FOREGROUNDDETECTOR_H 00003 00004 #include "cv.h" 00005 #include <cvaux.h> 00006 00007 #include "SimpleManeuveringFilter.h" 00008 00009 #ifdef WIN32 00010 #ifdef BUILD_DLL 00011 #define DLLIMPORTEXPORT __declspec(dllexport) 00012 #else 00013 #define DLLIMPORTEXPORT __declspec(dllimport) 00014 #endif 00015 #else 00016 #define DLLIMPORTEXPORT 00017 #endif 00018 00038 class DLLIMPORTEXPORT ForegroundDetector { 00039 public: 00040 ForegroundDetector(); 00041 virtual ~ForegroundDetector(); 00042 00048 static CvFGDStatModelParams getDefaultParameters(); 00058 void setParameters(const CvFGDStatModelParams &p) { parameters = p; forget(); } 00064 void getParameters(CvFGDStatModelParams &p) const { p = parameters; } 00065 00066 00072 SimpleManeuveringFilter &getPositionFilter() { return positionFilter; } 00078 SimpleManeuveringFilter &getSizeFilter() { return sizeFilter; } 00084 SimpleManeuveringFilter &getAngleFilter() { return angleFilter; } 00088 void resetFilters(); 00089 00090 00096 void run(IplImage* frame); 00097 00098 00104 IplImage* getImage() const { return image; } 00111 IplImage* getForeground() const; 00117 IplImage* getBackground() const; 00124 void drawEllipse(IplImage *image) const; 00132 CvBox2D getTrackBox() const { return track_box; } 00133 00134 00139 void forget() { doForget = true; } 00140 00141 private: 00142 CvBGStatModel* bg_model; 00143 IplImage* image, *foreground, *background; 00144 bool doForget; 00145 00146 CvBox2D track_box; 00147 00148 CvFGDStatModelParams parameters; 00149 00150 SimpleManeuveringFilter positionFilter, sizeFilter, angleFilter; 00151 }; 00152 00153 #endif // FOREGROUNDDETECTOR_H