// The following ifdef block is the standard way of creating macros which make exporting // from a DLL simpler. All files within this DLL are compiled with the HEADDETECTOR_EXPORTS // symbol defined on the command line. this symbol should not be defined on any project // that uses this DLL. This way any other project whose source files include this file see // HEADDETECTOR_API functions as being imported from a DLL, whereas this DLL sees symbols // defined with this macro as being exported. #ifndef ___HEADDETECT_H___ #define ___HEADDETECT_H___ //#define HEADDETECTOR_DLL_MODE #ifdef HEADDETECTOR_DLL_MODE #ifdef HEADDETECTOR_EXPORTS #define HEADDETECTOR_API __declspec(dllexport) #else #define HEADDETECTOR_API __declspec(dllimport) #endif #else #define HEADDETECTOR_API #endif /***********************************************/ /******* Need Math Library *********************/ #include "CCMath.h" /******* Need MAP Library *********************/ #include "CCMap.h" typedef struct MAP8_Quad_ { float X1,Y1,X2,Y2,W; u32 Age; float Angle; } MAP8_Quad; typedef struct DETECTEDFace_ { unsigned int DeadTime; MAP8_Quad BaseHead; Vector HeadPos; // X,Y,Angle; Vector HeadSize; // SX,SY; Vector RightEye; // X,Y,Validated != 0; Vector LeftEye; // X,Y,Validated != 0; Vector Nose; // X,Y,Validated != 0; Vector RightMouse; // X,Y,Validated != 0; Vector LeftMouse; // X,Y,Validated != 0; Vector UpMouse; // X,Y,Validated != 0; Vector DownMouse; // X,Y,Validated != 0; } DETECTEDFace; #define MAX_HEAD_DETECTED 16 #define MAX_MAP8_QUAD 128 // This class is exported from the HeadDetector.dll class HEADDETECTOR_API HeadDetector { public: HeadDetector(void); int ProcessImage(MAP *pImg); void SetDrawImage(MAP *pImgDraw); void CopyAsync(); u32 GetNumberOfFace(); void DrawDetectedFaces(u32 Enable); u32 GetFace(u32 INdex, Vector *Center,Vector *Size); u32 GetFaceFeature(u32 i, u32 FeatureIndexn, Vector *Center); private: MAP *pSrc; MAP *pSrcDRAW; u32 HeadTrackerRequested; u32 HeadTrackerRequested_DRAW; struct HAAR_Classifier_ *pHFF; struct HAAR_Classifier_ *pHFFOptimized; MAP8_Quad MAP8_QuadStack[MAX_MAP8_QUAD +1 ]; u32 MAP8_QuadStackNumber; DETECTEDFace ASM_AllDF[MAX_HEAD_DETECTED]; DETECTEDFace ASYNC_ASM_AllDF[MAX_HEAD_DETECTED]; u32 ASYNC_ulNumberOfHeads; u32 ulNumberOfHeads; u32 ulOldNumberOfHeads; }; #endif