OpenCV453
公開メンバ関数 | 全メンバ一覧
cv::face::FacemarkTrain クラスabstract

Abstract base class for trainable facemark models [詳解]

#include <facemark_train.hpp>

cv::face::Facemarkを継承しています。

cv::face::FacemarkAAM, cv::face::FacemarkLBFに継承されています。

公開メンバ関数

virtual bool addTrainingSample (InputArray image, InputArray landmarks)=0
 Add one training sample to the trainer. [詳解]
 
virtual void training (void *parameters=0)=0
 Trains a Facemark algorithm using the given dataset. Before the training process, training samples should be added to the trainer using face::addTrainingSample function. [詳解]
 
virtual bool setFaceDetector (FN_FaceDetector detector, void *userData=0)=0
 Set a user defined face detector for the Facemark algorithm. [詳解]
 
virtual bool getFaces (InputArray image, OutputArray faces)=0
 Detect faces from a given image using default or user defined face detector. Some Algorithm might not provide a default face detector. [詳解]
 
virtual bool getData (void *items=0)=0
 Get data from an algorithm [詳解]
 
- 基底クラス cv::face::Facemark に属する継承公開メンバ関数
virtual CV_WRAP void loadModel (String model)=0
 A function to load the trained model before the fitting process. [詳解]
 
virtual CV_WRAP bool fit (InputArray image, InputArray faces, OutputArrayOfArrays landmarks)=0
 Detect facial landmarks from an image. [詳解]
 
- 基底クラス cv::Algorithm に属する継承公開メンバ関数
virtual CV_WRAP void clear ()
 Clears the algorithm state [詳解]
 
virtual void write (FileStorage &fs) const
 Stores algorithm parameters in a file storage [詳解]
 
CV_WRAP void write (const Ptr< FileStorage > &fs, const String &name=String()) const
 simplified API for language bindings これはオーバーロードされたメンバ関数です。利便性のために用意されています。元の関数との違いは引き数のみです。
 
virtual CV_WRAP void read (const FileNode &fn)
 Reads algorithm parameters from a file storage [詳解]
 
virtual CV_WRAP bool empty () const
 Returns true if the Algorithm is empty (e.g. in the very beginning or after unsuccessful read [詳解]
 
virtual CV_WRAP void save (const String &filename) const
 
virtual CV_WRAP String getDefaultName () const
 

その他の継承メンバ

- 基底クラス cv::Algorithm に属する継承静的公開メンバ関数
template<typename _Tp >
static Ptr< _Tp > read (const FileNode &fn)
 Reads algorithm from the file node [詳解]
 
template<typename _Tp >
static Ptr< _Tp > load (const String &filename, const String &objname=String())
 Loads algorithm from the file [詳解]
 
template<typename _Tp >
static Ptr< _Tp > loadFromString (const String &strModel, const String &objname=String())
 Loads algorithm from a String [詳解]
 
- 基底クラス cv::Algorithm に属する継承限定公開メンバ関数
void writeFormat (FileStorage &fs) const
 

詳解

Abstract base class for trainable facemark models

To utilize this API in your program, please take a look at the tutorial_table_of_content_facemark

Description

The AAM and LBF facemark models in OpenCV are derived from the abstract base class FacemarkTrain, which provides a unified access to those facemark algorithms in OpenCV.

Here is an example on how to declare facemark algorithm:

// Using Facemark in your code:
Ptr<Facemark> facemark = FacemarkLBF::create();

The typical pipeline for facemark detection is listed as follows:

関数詳解

◆ addTrainingSample()

virtual bool cv::face::FacemarkTrain::addTrainingSample ( InputArray  image,
InputArray  landmarks 
)
pure virtual

Add one training sample to the trainer.

引数
imageInput image.
landmarksThe ground-truth of facial landmarks points corresponds to the image.

Example of usage

String imageFiles = "../data/images_train.txt";
String ptsFiles = "../data/points_train.txt";
std::vector<String> images_train;
std::vector<String> landmarks_train;
// load the list of dataset: image paths and landmark file paths
loadDatasetList(imageFiles,ptsFiles,images_train,landmarks_train);
Mat image;
std::vector<Point2f> facial_points;
for(size_t i=0;i<images_train.size();i++){
image = imread(images_train[i].c_str());
loadFacePoints(landmarks_train[i],facial_points);
facemark->addTrainingSample(image, facial_points);
}
CV_EXPORTS_W bool loadFacePoints(String filename, OutputArray points, float offset=0.0f)
A utility to load facial landmark information from a given file.
CV_EXPORTS_W bool loadDatasetList(String imageList, String annotationList, std::vector< String > &images, std::vector< String > &annotations)
A utility to load list of paths to training image and annotation file.
CV_EXPORTS_W Mat imread(const String &filename, int flags=IMREAD_COLOR)
Loads an image from a file.

The contents in the training files should follows the standard format. Here are examples for the contents in these files. example of content in the images_train.txt

/home/user/ibug/image_003_1.jpg
/home/user/ibug/image_004_1.jpg
/home/user/ibug/image_005_1.jpg
/home/user/ibug/image_006.jpg

example of content in the points_train.txt

/home/user/ibug/image_003_1.pts
/home/user/ibug/image_004_1.pts
/home/user/ibug/image_005_1.pts
/home/user/ibug/image_006.pts

◆ getData()

virtual bool cv::face::FacemarkTrain::getData ( void *  items = 0)
pure virtual

Get data from an algorithm

引数
itemsThe obtained data, algorithm dependent.

Example of usage

Ptr<FacemarkAAM> facemark = FacemarkAAM::create();
facemark->loadModel("AAM.yml");
FacemarkAAM::Data data;
facemark->getData(&data);
std::vector<Point2f> s0 = data.s0;
cout<<s0<<endl;
static Ptr< FacemarkAAM > create(const FacemarkAAM::Params &parameters=FacemarkAAM::Params())
initializer

◆ getFaces()

virtual bool cv::face::FacemarkTrain::getFaces ( InputArray  image,
OutputArray  faces 
)
pure virtual

Detect faces from a given image using default or user defined face detector. Some Algorithm might not provide a default face detector.

引数
imageInput image.
facesOutput of the function which represent region of interest of the detected faces. Each face is stored in cv::Rect container.

Example of usage

std::vector<cv::Rect> faces;
facemark->getFaces(img, faces);
for(int j=0;j<faces.size();j++){
cv::rectangle(img, faces[j], cv::Scalar(255,0,255));
}
CV_EXPORTS_W void rectangle(InputOutputArray img, Point pt1, Point pt2, const Scalar &color, int thickness=1, int lineType=LINE_8, int shift=0)
Draws a simple, thick, or filled up-right rectangle.

◆ setFaceDetector()

virtual bool cv::face::FacemarkTrain::setFaceDetector ( FN_FaceDetector  detector,
void *  userData = 0 
)
pure virtual

Set a user defined face detector for the Facemark algorithm.

引数
detectorThe user defined face detector function
userDataDetector parameters

Example of usage

MyDetectorParameters detectorParameters(...);
facemark->setFaceDetector(myDetector, &detectorParameters);

Example of a user defined face detector

bool myDetector( InputArray image, OutputArray faces, void* userData)
{
MyDetectorParameters* params = (MyDetectorParameters*)userData;
// -------- do something --------
}

TODO Lifetime of detector parameters is uncontrolled. Rework interface design to "Ptr<FaceDetector>".

◆ training()

virtual void cv::face::FacemarkTrain::training ( void *  parameters = 0)
pure virtual

Trains a Facemark algorithm using the given dataset. Before the training process, training samples should be added to the trainer using face::addTrainingSample function.

引数
parametersOptional extra parameters (algorithm dependent).

Example of usage

FacemarkLBF::Params params;
params.model_filename = "ibug68.model"; // filename to save the trained model
Ptr<Facemark> facemark = FacemarkLBF::create(params);
// add training samples (see Facemark::addTrainingSample)
facemark->training();

このクラス詳解は次のファイルから抽出されました: