#include "opencv2/video/background_segm.hpp" #include "opencv2/legacy/legacy.hpp" #include "opencv2/legacy/blobtrack.hpp" #include #include /* Select appropriate case insensitive string comparison function: */ #if defined WIN32 || defined _MSC_VER #define MY_STRNICMP strnicmp #define MY_STRICMP stricmp #else #define MY_STRNICMP strncasecmp #define MY_STRICMP strcasecmp #endif /* List of foreground (FG) DETECTION modules: */ static CvFGDetector* cvCreateFGDetector0 () { return cvCreateFGDetectorBase(CV_BG_MODEL_FGD, NULL); } static CvFGDetector* cvCreateFGDetector0Simple() { return cvCreateFGDetectorBase(CV_BG_MODEL_FGD_SIMPLE, NULL); } static CvFGDetector* cvCreateFGDetector1 () { return cvCreateFGDetectorBase(CV_BG_MODEL_MOG, NULL); } typedef struct DefModule_FGDetector { CvFGDetector* (*create)(); const char* nickname; const char* description; } DefModule_FGDetector; DefModule_FGDetector FGDetector_Modules[] = { {cvCreateFGDetector0,"FG_0","Foreground Object Detection from Videos Containing Complex Background. ACM MM2003."}, {cvCreateFGDetector0Simple,"FG_0S","Simplified version of FG_0"}, {cvCreateFGDetector1,"FG_1","Adaptive background mixture models for real-time tracking. CVPR1999"}, {NULL,NULL,NULL} }; /* List of BLOB DETECTION modules: */ typedef struct DefModule_BlobDetector { CvBlobDetector* (*create)(); const char* nickname; const char* description; } DefModule_BlobDetector; DefModule_BlobDetector BlobDetector_Modules[] = { {cvCreateBlobDetectorCC,"BD_CC","Detect new blob by tracking CC of FG mask"}, {cvCreateBlobDetectorSimple,"BD_Simple","Detect new blob by uniform moving of connected components of FG mask"}, {NULL,NULL,NULL} }; /* List of BLOB TRACKING modules: */ typedef struct DefModule_BlobTracker { CvBlobTracker* (*create)(); const char* nickname; const char* description; } DefModule_BlobTracker; DefModule_BlobTracker BlobTracker_Modules[] = { {cvCreateBlobTrackerCCMSPF,"CCMSPF","connected component tracking and MSPF resolver for collision"}, {cvCreateBlobTrackerCC,"CC","Simple connected component tracking"}, {cvCreateBlobTrackerMS,"MS","Mean shift algorithm "}, {cvCreateBlobTrackerMSFG,"MSFG","Mean shift algorithm with FG mask using"}, {cvCreateBlobTrackerMSPF,"MSPF","Particle filtering based on MS weight"}, {NULL,NULL,NULL} }; /* List of BLOB TRAJECTORY GENERATION modules: */ typedef struct DefModule_BlobTrackGen { CvBlobTrackGen* (*create)(); const char* nickname; const char* description; } DefModule_BlobTrackGen; DefModule_BlobTrackGen BlobTrackGen_Modules[] = { {cvCreateModuleBlobTrackGenYML,"YML","Generate track record in YML format as synthetic video data"}, {cvCreateModuleBlobTrackGen1,"RawTracks","Generate raw track record (x,y,sx,sy),()... in each line"}, {NULL,NULL,NULL} }; /* List of BLOB TRAJECTORY POST PROCESSING modules: */ typedef struct DefModule_BlobTrackPostProc { CvBlobTrackPostProc* (*create)(); const char* nickname; const char* description; } DefModule_BlobTrackPostProc; DefModule_BlobTrackPostProc BlobTrackPostProc_Modules[] = { {cvCreateModuleBlobTrackPostProcKalman,"Kalman","Kalman filtering of blob position and size"}, {NULL,"None","No post processing filter"}, // {cvCreateModuleBlobTrackPostProcTimeAverRect,"TimeAverRect","Average by time using rectangle window"}, // {cvCreateModuleBlobTrackPostProcTimeAverExp,"TimeAverExp","Average by time using exponential window"}, {NULL,NULL,NULL} }; /* List of BLOB TRAJECTORY ANALYSIS modules: */ CvBlobTrackAnalysis* cvCreateModuleBlobTrackAnalysisDetector(); typedef struct DefModule_BlobTrackAnalysis { CvBlobTrackAnalysis* (*create)(); const char* nickname; const char* description; } DefModule_BlobTrackAnalysis; DefModule_BlobTrackAnalysis BlobTrackAnalysis_Modules[] = { {cvCreateModuleBlobTrackAnalysisHistPVS,"HistPVS","Histogram of 5D feature vector analysis (x,y,vx,vy,state)"}, {NULL,"None","No trajectory analiser"}, {cvCreateModuleBlobTrackAnalysisHistP,"HistP","Histogram of 2D feature vector analysis (x,y)"}, {cvCreateModuleBlobTrackAnalysisHistPV,"HistPV","Histogram of 4D feature vector analysis (x,y,vx,vy)"}, {cvCreateModuleBlobTrackAnalysisHistSS,"HistSS","Histogram of 4D feature vector analysis (startpos,endpos)"}, {cvCreateModuleBlobTrackAnalysisTrackDist,"TrackDist","Compare tracks directly"}, {cvCreateModuleBlobTrackAnalysisIOR,"IOR","Integrator (by OR operation) of several analysers "}, {NULL,NULL,NULL} };