43 #ifndef __OPENCV_VIDEOSURVEILLANCE_H__
44 #define __OPENCV_VIDEOSURVEILLANCE_H__
52 #if _MSC_VER >= 1200 || defined __BORLANDC__
53 #define cv_stricmp stricmp
54 #define cv_strnicmp strnicmp
56 #define strdup _strdup
57 #define stricmp _stricmp
59 #elif defined __GNUC__
60 #define cv_stricmp strcasecmp
61 #define cv_strnicmp strncasecmp
63 #error Do not know how to make case-insensitive string comparison on this platform
86 char* m_pModuleTypeName;
100 int IsParam(
const char* name);
101 void AddParam(
const char* name,
double* pAddr);
102 void AddParam(
const char* name,
float* pAddr);
103 void AddParam(
const char* name,
int* pAddr);
104 void AddParam(
const char* name,
const char** pAddr);
105 void AddParam(
const char* name);
106 void CommentParam(
const char* name,
const char* pComment);
107 void SetTypeName(
const char* name);
108 void SetModuleName(
const char* name);
109 void DelParam(
const char* name);
112 const char* GetParamName(
int index);
113 const char* GetParamComment(
const char* name);
114 double GetParam(
const char* name);
115 const char* GetParamStr(
const char* name);
116 void SetParam(
const char* name,
double val);
117 void SetParamStr(
const char* name,
const char* str);
118 void TransferParamsFromChild(
CvVSModule* pM,
const char* prefix = NULL);
119 void TransferParamsToChild(
CvVSModule* pM,
char* prefix = NULL);
120 virtual void ParamUpdate();
121 const char* GetTypeName();
122 int IsModuleTypeName(
const char* name);
123 char* GetModuleName();
124 int IsModuleName(
const char* name);
125 void SetNickName(
const char* pStr);
126 const char* GetNickName();
130 virtual void Release() = 0;
143 virtual void Process(
IplImage* pImg) = 0;
165 #define CV_BLOB_MINW 5
166 #define CV_BLOB_MINH 5
167 #define CV_BLOB_ID(pB) (((CvBlob*)(pB))->ID)
168 #define CV_BLOB_CENTER(pB) cvPoint2D32f(((CvBlob*)(pB))->x,((CvBlob*)(pB))->y)
169 #define CV_BLOB_X(pB) (((CvBlob*)(pB))->x)
170 #define CV_BLOB_Y(pB) (((CvBlob*)(pB))->y)
171 #define CV_BLOB_WX(pB) (((CvBlob*)(pB))->w)
172 #define CV_BLOB_WY(pB) (((CvBlob*)(pB))->h)
173 #define CV_BLOB_RX(pB) (0.5f*CV_BLOB_WX(pB))
174 #define CV_BLOB_RY(pB) (0.5f*CV_BLOB_WY(pB))
175 #define CV_BLOB_RECT(pB) cvRect(cvRound(((CvBlob*)(pB))->x-CV_BLOB_RX(pB)),cvRound(((CvBlob*)(pB))->y-CV_BLOB_RY(pB)),cvRound(CV_BLOB_WX(pB)),cvRound(CV_BLOB_WY(pB)))
187 strcpy(m_pElemFormat,
"ffffi");
200 for(i=0; i<m_pSeq->total; ++i)
205 virtual void DelBlob(
int BlobIndex)
209 virtual void DelBlobByID(
int BlobID)
212 for(i=0; i<m_pSeq->total; ++i)
229 virtual int GetBlobNum()
231 return m_pSeq->total;
235 const char* attr[] = {
"dt",m_pElemFormat,NULL};
249 for(i=0;i<pSeq->total;++i)
256 void AddFormat(
const char* str){strcat(m_pElemFormat,str);}
260 char m_pElemFormat[1024];
279 virtual CvBlobTrack* GetBlobTrackByID(
int TrackID);
280 virtual void DelBlobTrack(
int TrackIndex);
281 virtual void DelBlobTrackByID(
int TrackID);
282 virtual void Clear();
283 virtual void AddBlobTrack(
int TrackID,
int StartFrame = 0);
284 virtual int GetBlobTrackNum();
338 bool Load(
const char* = 0 );
341 CvSize GetMinWindowSize()
const;
344 int GetMaxBorderSize()
const;
353 class CvObjectDetectorImpl*
impl;
396 void SetShapes(
const CvDrawShape* shapes,
int num );
414 virtual void SetFileName(
char* pFileName) = 0;
415 virtual void AddBlob(
CvBlob* pBlob) = 0;
422 if(*pBTGen)(*pBTGen)->Release();
446 virtual int GetBlobNum() = 0;
449 virtual CvBlob* GetBlob(
int BlobIndex) = 0;
452 virtual void DelBlob(
int BlobIndex) = 0;
475 virtual int GetBlobIndexByID(
int BlobID);
478 virtual CvBlob* GetBlobByID(
int BlobID);
481 virtual void DelBlobByID(
int BlobID);
484 virtual void SetBlob(
int ,
CvBlob* );
487 virtual void SetBlobByID(
int BlobID,
CvBlob* pBlob);
492 virtual int GetBlobHypNum(
int );
495 virtual CvBlob* GetBlobHyp(
int BlobIndex,
int );
500 virtual void SetBlobHyp(
int ,
CvBlob* );
535 #define PROFILE_EPANECHNIKOV 0
536 #define PROFILE_DOG 1
601 virtual void AddBlob(
CvBlob* pBlob) = 0;
602 virtual void Process() = 0;
603 virtual int GetBlobNum() = 0;
604 virtual CvBlob* GetBlob(
int index) = 0;
611 for(i=GetBlobNum();i>0;i--)
614 if(pB->
ID==BlobID)
return pB;
622 if(pBTPP == NULL)
return;
623 if(*pBTPP)(*pBTPP)->Release();
665 virtual void AddBlob(
CvBlob* pBlob) = 0;
667 virtual float GetState(
int BlobID) = 0;
678 if(pBTPP == NULL)
return;
679 if(*pBTPP)(*pBTPP)->Release();
688 virtual void AddBlob(
CvBlob* pBlob) = 0;
691 virtual int GetFVSize() = 0;
692 virtual int GetFVNum() = 0;
693 virtual float* GetFV(
int index,
int* pFVID) = 0;
695 virtual float* GetFVMin() = 0;
696 virtual float* GetFVMax() = 0;
708 virtual void Release() = 0;
755 virtual double GetHeight(
CvBlob* pB) = 0;
767 virtual CvBlob* GetBlob(
int index) = 0;
768 virtual CvBlob* GetBlobByID(
int ID) = 0;
769 virtual int GetBlobNum() = 0;
771 virtual float GetState(
int BlobID) = 0;
772 virtual const char* GetStateDesc(
int BlobID) = 0;
852 virtual double Value(
int* ,
int = 0,
int = 0){
return -1;};
857 virtual void AddFeature(
float W,
int* comps,
int x =0,
int y = 0) = 0;
858 virtual void Scale(
float factor = 0,
int x = -1,
int y = -1) = 0;
859 virtual void Release() = 0;
870 #define CV_BT_HIST_TYPE_S 0
871 #define CV_BT_HIST_TYPE_MG 1
872 #define CV_BT_HIST_TYPE_MG2 2
873 #define CV_BT_HIST_TYPE_H 3
886 #define CV_NOISE_NONE 0
887 #define CV_NOISE_GAUSSIAN 1
888 #define CV_NOISE_UNIFORM 2
889 #define CV_NOISE_SPECKLE 3
890 #define CV_NOISE_SALT_AND_PEPPER 4