Bonjour,
J'ai trouver dans la librarie openCV une déclaration qui me parait interessante car elle represente une sort de classe abstraite:
Puis les pseudo classes fille sont definie ainsi:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18 struct CvBGStatModel; typedef void (CV_CDECL * CvReleaseBGStatModel)( struct CvBGStatModel** bg_model ); typedef int (CV_CDECL * CvUpdateBGStatModel)( IplImage* curr_frame, struct CvBGStatModel* bg_model ); #define CV_BG_STAT_MODEL_FIELDS() \ int type; /*type of BG model*/ \ CvReleaseBGStatModel release; \ CvUpdateBGStatModel update; \ IplImage* background; /*8UC3 reference background image*/ \ IplImage* foreground; /*8UC1 foreground image*/ typedef struct CvBGStatModel { CV_BG_STAT_MODEL_FIELDS(); } CvBGStatModel;
Puis dans le code il utilise CvBGStatModel pour appeler les functions qui regarde le type et donc apres appel leur fonction specialisée.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17 typedef struct CvFGDStatModel { CV_BG_STAT_MODEL_FIELDS(); IplImage* prev_frame; CvFGDStatModelParams params; } CvFGDStatModel; typedef struct CvGaussBGModel { CV_BG_STAT_MODEL_FIELDS(); CvGaussBGStatModelParams params; CvGaussBGPoint* g_point; int countFrames; } CvGaussBGModel;
Cependant je ne comprend pas vraiment le #define CV_BG_STAT_MODEL_FIELDS() ...
Et surtout je ne comprend pas du tout comment marche les functions
typedef void (CV_CDECL * CvReleaseBGStatModel)( struct CvBGStatModel** bg_model );
typedef int (CV_CDECL * CvUpdateBGStatModel)( IplImage* curr_frame, struct CvBGStatModel* bg_model );
Si qqun pourrait m'aider!
Le code se trouver actuellement sur http://opencvlibrary.svn.sourceforge...34&view=markup
Merci
Partager