/*M/////////////////////////////////////////////////////////////////////////////////////// // // IMPORTANT: READ BEFORE DOWNLOADING, COPYING, INSTALLING OR USING. // // By downloading, copying, installing or using the software you agree to this license. // If you do not agree to this license, do not download, install, // copy or use the software. // // // Intel License Agreement // For Open Source Computer Vision Library // // Copyright (C) 2000, Intel Corporation, all rights reserved. // Third party copyrights are property of their respective owners. // // Redistribution and use in source and binary forms, with or without modification, // are permitted provided that the following conditions are met: // // * Redistribution's of source code must retain the above copyright notice, // this list of conditions and the following disclaimer. // // * Redistribution's in binary form must reproduce the above copyright notice, // this list of conditions and the following disclaimer in the documentation // and/or other materials provided with the distribution. // // * The name of Intel Corporation may not be used to endorse or promote products // derived from this software without specific prior written permission. // // This software is provided by the copyright holders and contributors "as is" and // any express or implied warranties, including, but not limited to, the implied // warranties of merchantability and fitness for a particular purpose are disclaimed. // In no event shall the Intel Corporation or contributors be liable for any direct, // indirect, incidental, special, exemplary, or consequential damages // (including, but not limited to, procurement of substitute goods or services; // loss of use, data, or profits; or business interruption) however caused // and on any theory of liability, whether in contract, strict liability, // or tort (including negligence or otherwise) arising in any way out of // the use of this software, even if advised of the possibility of such damage. // //M*/ /////////////////////////////////////////////// //// Created by Khudyakov V.A. bober@gorodok.net ////////////////////////////////////////////// #ifndef __CVFACETEMPLATE_H__ #define __CVFACETEMPLATE_H__ class FaceFeature { public: FaceFeature(double dWeight,void * lpContour,bool bIsFeature); FaceFeature(); virtual ~FaceFeature(); inline bool isFaceFeature(); inline void * GetContour(); inline double GetWeight(); inline void SetContour(void * lpContour); inline void SetWeight(double dWeight); inline void SetFeature(bool bIsFeature); private: double m_dWeight; void * m_lpContour; bool m_bIsFaceFeature; };//class FaceFeature inline void FaceFeature::SetFeature(bool bIsFeature) { m_bIsFaceFeature = bIsFeature; } inline bool FaceFeature::isFaceFeature() { return m_bIsFaceFeature; }//inline bool FaceFeature::isFaceFeature() inline void * FaceFeature::GetContour() { return m_lpContour; }//inline void * FaceFeature::GetContour() inline double FaceFeature::GetWeight() { return m_dWeight; }//inline long FaceFeature::GetWeight() inline void FaceFeature::SetContour(void * lpContour) { m_lpContour = lpContour; }//inline void FaceFeature::SetContour(void * lpContour) inline void FaceFeature::SetWeight(double dWeight) { m_dWeight = dWeight; }//inline void FaceFeature::SetWeight(double * dWeight) class FaceTemplate { public: FaceTemplate(long lFeatureCount) {m_lFeturesCount = lFeatureCount; m_lpFeaturesList = new FaceFeature[lFeatureCount];}; virtual ~FaceTemplate(); inline long GetCount(); inline FaceFeature * GetFeatures(); protected: FaceFeature * m_lpFeaturesList; private: long m_lFeturesCount; };//class FaceTemplate inline long FaceTemplate::GetCount() { return m_lFeturesCount; }//inline long FaceTemplate::GetCount() inline FaceFeature * FaceTemplate::GetFeatures() { return m_lpFeaturesList; }//inline FaceFeature * FaceTemplate::GetFeatures() //////////// //class RFaceTemplate /////////// class MouthFaceTemplate:public FaceTemplate { public: inline MouthFaceTemplate(long lNumber,CvRect rect,double dEyeWidth,double dEyeHeight,double dDistanceBetweenEye,double dDistanceEyeAboveMouth); ~MouthFaceTemplate(); };//class MouthFaceTemplate:public FaceTemplate inline MouthFaceTemplate::MouthFaceTemplate(long lNumber,CvRect rect,double dEyeWidth,double dEyeHeight, double dDistanceBetweenEye,double dDistanceEyeAboveMouth):FaceTemplate(lNumber) { CvRect MouthRect = rect; CvRect LeftEyeRect = cvRect(cvRound(rect.x - (dEyeWidth + dDistanceBetweenEye/(double)2 - (double)rect.width/(double)2)), cvRound(rect.y - dDistanceEyeAboveMouth - dEyeHeight), cvRound(dEyeWidth), cvRound(dEyeHeight) ); CvRect RightEyeRect = cvRect(cvRound(rect.x + (double)rect.width/(double)2 + dDistanceBetweenEye/(double)2), cvRound(rect.y - dDistanceEyeAboveMouth - dEyeHeight), cvRound(dEyeWidth), cvRound(dEyeHeight) ); // CvRect NoseRect = cvRect(cvRound(rect.x + (double)rect.width/(double)4), // cvRound(rect.y - (double)rect.width/(double)2 - (double)rect.height/(double)4), // cvRound((double)rect.width/(double)2), // cvRound((double)rect.width/(double)2) ); /* CvRect CheenRect = cvRect(rect.x,rect.y + 3*rect.height/2,rect.width,rect.height); */ CvRect * lpMouthRect = new CvRect(); *lpMouthRect = MouthRect; m_lpFeaturesList[0].SetContour(lpMouthRect); m_lpFeaturesList[0].SetWeight(1); m_lpFeaturesList[0].SetFeature(false); CvRect * lpLeftEyeRect = new CvRect(); *lpLeftEyeRect = LeftEyeRect; m_lpFeaturesList[1].SetContour(lpLeftEyeRect); m_lpFeaturesList[1].SetWeight(1); m_lpFeaturesList[1].SetFeature(true); CvRect * lpRightEyeRect = new CvRect(); *lpRightEyeRect = RightEyeRect; m_lpFeaturesList[2].SetContour(lpRightEyeRect); m_lpFeaturesList[2].SetWeight(1); m_lpFeaturesList[2].SetFeature(true); // CvRect * lpNoseRect = new CvRect(); // *lpNoseRect = NoseRect; // m_lpFeaturesList[3].SetContour(lpNoseRect); // m_lpFeaturesList[3].SetWeight(0); // m_lpFeaturesList[3].SetFeature(true); /* CvRect * lpCheenRect = new CvRect(); *lpCheenRect = CheenRect; m_lpFeaturesList[4].SetContour(lpCheenRect); m_lpFeaturesList[4].SetWeight(1); m_lpFeaturesList[4].SetFeature(false); */ };//constructor MouthFaceTemplate(long lNumFeatures,CvRect rect,double dEyeWidth,double dEyeHeight,double dDistanceBetweenEye,double dDistanceEyeAboveMouth); #endif//__FACETEMPLATE_H__