// This file is part of OpenCV project. // It is subject to the license terms in the LICENSE file found in the top-level directory // of this distribution and at http://opencv.org/license.html. #ifndef __OPENCV_FACE_ALIGNMENT_HPP__ #define __OPENCV_FACE_ALIGNMENT_HPP__ #include "opencv2/face/facemark_train.hpp" namespace cv{ namespace face{ class CV_EXPORTS_W FacemarkKazemi : public Facemark { public: struct CV_EXPORTS Params { /** * \brief Constructor */ Params(); /// cascade_depth This stores the deapth of cascade used for training. unsigned long cascade_depth; /// tree_depth This stores the max height of the regression tree built. unsigned long tree_depth; /// num_trees_per_cascade_level This stores number of trees fit per cascade level. unsigned long num_trees_per_cascade_level; /// learning_rate stores the learning rate in gradient boosting, also referred as shrinkage. float learning_rate; /// oversampling_amount stores number of initialisations used to create training samples. unsigned long oversampling_amount; /// num_test_coordinates stores number of test coordinates. unsigned long num_test_coordinates; /// lambda stores a value to calculate probability of closeness of two coordinates. float lambda; /// num_test_splits stores number of random test splits generated. unsigned long num_test_splits; /// configfile stores the name of the file containing the values of training parameters String configfile; }; static Ptr create(const FacemarkKazemi::Params ¶meters = FacemarkKazemi::Params()); virtual ~FacemarkKazemi(); /** @brief This function is used to train the model using gradient boosting to get a cascade of regressors *which can then be used to predict shape. *@param images A vector of type cv::Mat which stores the images which are used in training samples. *@param landmarks A vector of vectors of type cv::Point2f which stores the landmarks detected in a particular image. *@param scale A size of type cv::Size to which all images and landmarks have to be scaled to. *@param configfile A variable of type std::string which stores the name of the file storing parameters for training the model. *@param modelFilename A variable of type std::string which stores the name of the trained model file that has to be saved. *@returns A boolean value. The function returns true if the model is trained properly or false if it is not trained. */ virtual bool training(std::vector& images, std::vector< std::vector >& landmarks,std::string configfile,Size scale,std::string modelFilename = "face_landmarks.dat")=0; /// set the custom face detector virtual bool setFaceDetector(bool(*f)(InputArray , OutputArray, void*), void* userData)=0; /// get faces using the custom detector virtual bool getFaces(InputArray image, OutputArray faces)=0; }; }} // namespace #endif