Face

Objective-C

@interface Face : NSObject

Swift

class Face : NSObject

The Face module

Member classes: FaceRecognizer, Facemark, PredictCollector, StandardCollector, FacemarkKazemi, FacemarkAAM, BIF, MACE, FacemarkTrain, FacemarkLBF, BasicFaceRecognizer, EigenFaceRecognizer, FisherFaceRecognizer, LBPHFaceRecognizer

Methods

  • Declaration

    Objective-C

    + (Facemark*)createFacemarkAAM NS_SWIFT_NAME(createFacemarkAAM());

    Swift

    class func createFacemarkAAM() -> Facemark
  • Declaration

    Objective-C

    + (Facemark*)createFacemarkKazemi NS_SWIFT_NAME(createFacemarkKazemi());

    Swift

    class func createFacemarkKazemi() -> Facemark
  • Declaration

    Objective-C

    + (Facemark*)createFacemarkLBF NS_SWIFT_NAME(createFacemarkLBF());

    Swift

    class func createFacemarkLBF() -> Facemark
  • Default face detector This function is mainly utilized by the implementation of a Facemark Algorithm. End users are advised to use function Facemark::getFaces which can be manually defined and circumvented to the algorithm by Facemark::setFaceDetector.

    Example of usage

    std::vectorcv::Rect faces; CParams params(“haarcascade_frontalface_alt.xml”); cv::face::getFaces(frame, faces, &params); for(int j=0;j<faces.size();j++){ cv::rectangle(frame, faces[j], cv::Scalar(255,0,255)); } cv::imshow(“detection”, frame);

    Declaration

    Objective-C

    + (BOOL)getFacesHAAR:(nonnull Mat *)image
                    faces:(nonnull Mat *)faces
        face_cascade_name:(nonnull NSString *)face_cascade_name;

    Swift

    class func getFacesHAAR(image: Mat, faces: Mat, face_cascade_name: String) -> Bool

    Parameters

    image

    The input image to be processed.

    faces

    Output of the function which represent region of interest of the detected faces. Each face is stored in cv::Rect container.

  • A utility to load list of paths to training image and annotation file.

    Example of usage:

    String imageFiles = “images_path.txt”; String ptsFiles = “annotations_path.txt”; std::vector images_train; std::vector landmarks_train; loadDatasetList(imageFiles,ptsFiles,images_train,landmarks_train);

    Declaration

    Objective-C

    + (BOOL)loadDatasetList:(nonnull NSString *)imageList
             annotationList:(nonnull NSString *)annotationList
                     images:(nonnull NSArray<NSString *> *)images
                annotations:(nonnull NSArray<NSString *> *)annotations;

    Swift

    class func loadDatasetList(imageList: String, annotationList: String, images: [String], annotations: [String]) -> Bool

    Parameters

    imageList

    The specified file contains paths to the training images.

    annotationList

    The specified file contains paths to the training annotations.

    images

    The loaded paths of training images.

    annotations

    The loaded paths of annotation files.

  • A utility to load facial landmark information from a given file.

    Example of usage

    std::vector points; face::loadFacePoints(“filename.txt”, points, 0.0f);

    The annotation file should follow the default format which is

    version: 1 n_points: 68 { 212.716603 499.771793 230.232816 566.290071 … }

    where n_points is the number of points considered and each point is represented as its position in x and y.

    Declaration

    Objective-C

    + (BOOL)loadFacePoints:(nonnull NSString *)filename
                    points:(nonnull Mat *)points
                    offset:(float)offset;

    Swift

    class func loadFacePoints(filename: String, points: Mat, offset: Float) -> Bool

    Parameters

    filename

    The filename of file contains the facial landmarks data.

    points

    The loaded facial landmark points.

    offset

    An offset value to adjust the loaded points.

  • A utility to load facial landmark information from a given file.

    Example of usage

    std::vector points; face::loadFacePoints(“filename.txt”, points, 0.0f);

    The annotation file should follow the default format which is

    version: 1 n_points: 68 { 212.716603 499.771793 230.232816 566.290071 … }

    where n_points is the number of points considered and each point is represented as its position in x and y.

    Declaration

    Objective-C

    + (BOOL)loadFacePoints:(nonnull NSString *)filename
                    points:(nonnull Mat *)points;

    Swift

    class func loadFacePoints(filename: String, points: Mat) -> Bool

    Parameters

    filename

    The filename of file contains the facial landmarks data.

    points

    The loaded facial landmark points.

  • A utility to load facial landmark dataset from a single file.

    /home/user/ibug/image_003_1.jpg 336.820955 240.864510 334.238298 260.922709 335.266918 … /home/user/ibug/image_005_1.jpg 376.158428 230.845712 376.736984 254.924635 383.265403 …

    Example of usage

    cv::String imageFiles = “../data/images_train.txt”; cv::String ptsFiles = “../data/points_train.txt”; std::vector images; std::vectorstd::vector<Point2f > facePoints; loadTrainingData(imageFiles, ptsFiles, images, facePoints, 0.0f);

    Declaration

    Objective-C

    + (BOOL)loadTrainingData:(nonnull NSString *)filename
                      images:(nonnull NSArray<NSString *> *)images
                  facePoints:(nonnull Mat *)facePoints
                       delim:(char)delim
                      offset:(float)offset;

    Swift

    class func loadTrainingData(filename: String, images: [String], facePoints: Mat, delim: Int8, offset: Float) -> Bool

    Parameters

    filename

    The filename of a file that contains the dataset information. Each line contains the filename of an image followed by pairs of x and y values of facial landmarks points separated by a space. Example

    images

    A vector where each element represent the filename of image in the dataset. Images are not loaded by default to save the memory.

    facePoints

    The loaded landmark points for all training data.

    delim

    Delimiter between each element, the default value is a whitespace.

    offset

    An offset value to adjust the loaded points.

  • A utility to load facial landmark dataset from a single file.

    /home/user/ibug/image_003_1.jpg 336.820955 240.864510 334.238298 260.922709 335.266918 … /home/user/ibug/image_005_1.jpg 376.158428 230.845712 376.736984 254.924635 383.265403 …

    Example of usage

    cv::String imageFiles = “../data/images_train.txt”; cv::String ptsFiles = “../data/points_train.txt”; std::vector images; std::vectorstd::vector<Point2f > facePoints; loadTrainingData(imageFiles, ptsFiles, images, facePoints, 0.0f);

    Declaration

    Objective-C

    + (BOOL)loadTrainingData:(nonnull NSString *)filename
                      images:(nonnull NSArray<NSString *> *)images
                  facePoints:(nonnull Mat *)facePoints
                       delim:(char)delim;

    Swift

    class func loadTrainingData(filename: String, images: [String], facePoints: Mat, delim: Int8) -> Bool

    Parameters

    filename

    The filename of a file that contains the dataset information. Each line contains the filename of an image followed by pairs of x and y values of facial landmarks points separated by a space. Example

    images

    A vector where each element represent the filename of image in the dataset. Images are not loaded by default to save the memory.

    facePoints

    The loaded landmark points for all training data.

    delim

    Delimiter between each element, the default value is a whitespace.

  • A utility to load facial landmark dataset from a single file.

    /home/user/ibug/image_003_1.jpg 336.820955 240.864510 334.238298 260.922709 335.266918 … /home/user/ibug/image_005_1.jpg 376.158428 230.845712 376.736984 254.924635 383.265403 …

    Example of usage

    cv::String imageFiles = “../data/images_train.txt”; cv::String ptsFiles = “../data/points_train.txt”; std::vector images; std::vectorstd::vector<Point2f > facePoints; loadTrainingData(imageFiles, ptsFiles, images, facePoints, 0.0f);

    Declaration

    Objective-C

    + (BOOL)loadTrainingData:(nonnull NSString *)filename
                      images:(nonnull NSArray<NSString *> *)images
                  facePoints:(nonnull Mat *)facePoints;

    Swift

    class func loadTrainingData(filename: String, images: [String], facePoints: Mat) -> Bool

    Parameters

    filename

    The filename of a file that contains the dataset information. Each line contains the filename of an image followed by pairs of x and y values of facial landmarks points separated by a space. Example

    images

    A vector where each element represent the filename of image in the dataset. Images are not loaded by default to save the memory.

    facePoints

    The loaded landmark points for all training data.

  • A utility to load facial landmark information from the dataset.

    Example of usage

    cv::String imageFiles = “../data/images_train.txt”; cv::String ptsFiles = “../data/points_train.txt”; std::vector images; std::vectorstd::vector<Point2f > facePoints; loadTrainingData(imageFiles, ptsFiles, images, facePoints, 0.0f);

    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

    Declaration

    Objective-C

    + (BOOL)loadTrainingData:(nonnull NSString *)imageList
                 groundTruth:(nonnull NSString *)groundTruth
                      images:(nonnull NSArray<NSString *> *)images
                  facePoints:(nonnull Mat *)facePoints
                      offset:(float)offset;

    Swift

    class func loadTrainingData(imageList: String, groundTruth: String, images: [String], facePoints: Mat, offset: Float) -> Bool

    Parameters

    imageList

    A file contains the list of image filenames in the training dataset.

    groundTruth

    A file contains the list of filenames where the landmarks points information are stored. The content in each file should follow the standard format (see face::loadFacePoints).

    images

    A vector where each element represent the filename of image in the dataset. Images are not loaded by default to save the memory.

    facePoints

    The loaded landmark points for all training data.

    offset

    An offset value to adjust the loaded points.

  • A utility to load facial landmark information from the dataset.

    Example of usage

    cv::String imageFiles = “../data/images_train.txt”; cv::String ptsFiles = “../data/points_train.txt”; std::vector images; std::vectorstd::vector<Point2f > facePoints; loadTrainingData(imageFiles, ptsFiles, images, facePoints, 0.0f);

    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

    Declaration

    Objective-C

    + (BOOL)loadTrainingData:(nonnull NSString *)imageList
                 groundTruth:(nonnull NSString *)groundTruth
                      images:(nonnull NSArray<NSString *> *)images
                  facePoints:(nonnull Mat *)facePoints;

    Swift

    class func loadTrainingData(imageList: String, groundTruth: String, images: [String], facePoints: Mat) -> Bool

    Parameters

    imageList

    A file contains the list of image filenames in the training dataset.

    groundTruth

    A file contains the list of filenames where the landmarks points information are stored. The content in each file should follow the standard format (see face::loadFacePoints).

    images

    A vector where each element represent the filename of image in the dataset. Images are not loaded by default to save the memory.

    facePoints

    The loaded landmark points for all training data.

  • This function extracts the data for training from .txt files which contains the corresponding image name and landmarks. The first file in each file should give the path of the image whose landmarks are being described in the file. Then in the subsequent lines there should be coordinates of the landmarks in the image i.e each line should be of the form x,y where x represents the x coordinate of the landmark and y represents the y coordinate of the landmark.

    For reference you can see the files as provided in the HELEN dataset

    Declaration

    Objective-C

    + (BOOL)loadTrainingData:(nonnull NSArray<NSString *> *)filename
              trainlandmarks:(nonnull NSArray<NSArray<Point2f *> *> *)trainlandmarks
                 trainimages:(nonnull NSArray<NSString *> *)trainimages;

    Swift

    class func loadTrainingData(filename: [String], trainlandmarks: [[Point2f]], trainimages: [String]) -> Bool

    Parameters

    filename

    A vector of type cv::String containing name of the .txt files.

    trainlandmarks

    A vector of type cv::Point2f that would store shape or landmarks of all images.

    trainimages

    A vector of type cv::String which stores the name of images whose landmarks are tracked

    Return Value

    A boolean value. It returns true when it reads the data successfully and false otherwise

  • Utility to draw the detected facial landmark points

    Example of usage

    std::vector faces; std::vectorstd::vector<Point2f > landmarks; facemark->getFaces(img, faces); facemark->fit(img, faces, landmarks); for(int j=0;j<rects.size();j++){ face::drawFacemarks(frame, landmarks[j], Scalar(0,0,255)); }

    Declaration

    Objective-C

    + (void)drawFacemarks:(nonnull Mat *)image
                   points:(nonnull Mat *)points
                    color:(nonnull Scalar *)color;

    Swift

    class func drawFacemarks(image: Mat, points: Mat, color: Scalar)

    Parameters

    image

    The input image to be processed.

    points

    Contains the data of points which will be drawn.

    color

    The color of points in BGR format represented by cv::Scalar.

  • Utility to draw the detected facial landmark points

    Example of usage

    std::vector faces; std::vectorstd::vector<Point2f > landmarks; facemark->getFaces(img, faces); facemark->fit(img, faces, landmarks); for(int j=0;j<rects.size();j++){ face::drawFacemarks(frame, landmarks[j], Scalar(0,0,255)); }

    Declaration

    Objective-C

    + (void)drawFacemarks:(nonnull Mat *)image points:(nonnull Mat *)points;

    Swift

    class func drawFacemarks(image: Mat, points: Mat)

    Parameters

    image

    The input image to be processed.

    points

    Contains the data of points which will be drawn.