Luxand FaceSDK – Facial Feature Detection

FaceSDK provides the FSDK_DetectFacialFeatures function to detect facial features in an image and the FSDK_DetectEyes function to detect just eye centers in an image. First, these functions detect a frontal face in an image, and then detect its facial features or only eye centers. The FSDK_DetectFacialFeaturesInRegion and FSDK_DetectEyesInRegion functions do not perform the face detection step and detect facial features or eye centers in a region returned by FSDK_DetectFace or FSDK_DetectMultipleFaces.

In the current version of Luxand FaceSDK the performance of FSDK_DetectEyes and FSDK_DetectFacialFeatures is the same, so there is no advantage in calling FSDK_DetectEyes instead of FSDK_DetectFacialFeatures.

The facial features are stored in the FSDK_Features data structure. FSDK_Features is an array data type containing FSDK_FACIAL_FEATURE_COUNT points. The list of facial features recognized by FaceSDK is available in the Detected Facial Features chapter.

Eye centers are saved to FSDK_Features[0] and FSDK_Features[1]. The FSDK_DetectEyes and FSDK_DetectEyesInRegion functions do not change other elements of the FSDK_Features array.

C++ Declaration:

typedef struct { int x,y; } TPoint;
typedef TPoint FSDK_Features [FSDK_FACIAL_FEATURE_COUNT];

 C# Declaration:

public struct TPoint {
   public int x, y;
}

Delphi Declaration:

TPoint = record
   x, y: integer;
end;
FSDK_Features = array[0..FSDK_FACIAL_FEATURE_COUNT - 1] of TPoint;
PFSDK_Features = ^FSDK_Features;

VB Declaration:

Type TPoint
   x As Long
   y As Long
End Type

Java and Android Declaration:

The class TPoint has the following properties:

   public int x, y;

The class FSDK_Features has the following property:

   public TPoint features[];

  FSDK_DetectFacialFeatures Function

Detects a frontal face in an image and detects its facial features.

C++ Syntax:

int FSDK_DetectFacialFeatures(HImage Image, FSDK_Features* FacialFeatures);

Delphi Syntax:

function FSDK_DetectFacialFeatures(Image: HImage; FacialFeatures: PFSDK_Features): integer;

C# Syntax:

int FSDK.DetectFacialFeatures(int Image, out FSDK.TPoint[] FacialFeatures);

VB Syntax:

Function FSDKVB_DetectFacialFeatures(ByVal Image As Long, ByRef FacialFeatures As TPoint) As Long

Java Syntax:

int FSDK.DetectFacialFeatures(HImage Image, FSDK_Features.ByReference FacialFeatures);

Android Syntax:

int FSDK.DetectFacialFeatures(HImage Image, FSDK_Features FacialFeatures);

CImage Syntax:

FSDK.TPoint[] FSDK.CImage.DetectFacialFeatures();

Parameters:

Image - handle of the image facial features should be detected in.

FacialFeatures – pointer to the FSDK_Features array for receiving the detected facial features.

Return Value:

Returns FSDKE_OK if successful.

Example

int img1;
FSDK_Features Features;

FSDK_Initialize("");
FSDK_LoadImageFromFile(&img1, "test.jpg");
FSDK_DetectFacialFeatures(img1, Features);

printf("Left eye location: (%d, %d)\n", Features[FSDKP_LEFT_EYE].x, Features[FSDKP_LEFT_EYE].y);
printf("Right eye location: (%d, %d)\n", Features[FSDKP_RIGHT_EYE].y, Features[FSDKP_RIGHT_EYE].y);

  FSDK_DetectFacialFeaturesInRegion Function

Detects facial features in an image region returned by FSDK_DetectFace or FSDK_DetectMultipleFaces. This function can be useful if an approximate face size is known, or to detect facial features of a specific face returned by FSDK_DetectMultipleFaces.

C++ Syntax:

int FSDK_DetectFacialFeaturesInRegion(HImage Image, TFacePosition* FacePosition, FSDK_Features* FacialFeatures);

Delphi Syntax:

function FSDK_DetectFacialFeaturesInRegion(Image: HImage; FacePosition: PFacePosition; FacialFeatures: PFSDK_Features): integer;

C# Syntax:

int FSDK.DetectFacialFeaturesInRegion(int Image, ref FSDK.TFacePosition FacePosition, out FSDK.TPoint[] FacialFeatures);

VB Syntax:

Function FSDKVB_DetectFacialFeaturesInRegion(ByVal Image As Long, ByRef FacePosition As TFacePosition, ByRef FacialFeatures As TPoint) As Long

Java Syntax:

int FSDK.DetectFacialFeaturesInRegion(HImage Image, TFacePosition FacePosition, FSDK_Features.ByReference FacialFeatures);

Android Syntax:

int FSDK.DetectFacialFeaturesInRegion(HImage Image, TFacePosition FacePosition, FSDK_Features FacialFeatures);

CImage Syntax:

FSDK.TPoint[] FSDK.CImage.DetectFacialFeaturesInRegion(ref FSDK.TFacePosition FacePosition);

Parameters:

Image– handle of the image facial features should be detected in.

FacePosition– pointer to the face position structure.

FacialFeatures– pointer to the FSDK_Features array for receiving the detected facial features.

Return Value:

Returns FSDKE_OK if successful.

Example

int i, DetectedCount, img1;
FSDK_Features Features;
TFacePosition FaceArray[50];

FSDK_Initialize("");
FSDK_LoadImageFromFile(&img1, "test.jpg");

FSDK_DetectMultipleFaces(img1, &DetectedCount , FaceArray, sizeof(FaceArray));

for (i = 0; i < DetectedCount; i++) {
   FSDK_DetectFacialFeaturesInRegion(img1, FaceArray[i], Features);
   printf("Left eye location: (%d, %d)\n", Features[FSDKP_LEFT_EYE].x, Features[FSDKP_LEFT_EYE].y);
   printf("Right eye location: (%d, %d)\n", Features[FSDKP_RIGHT_EYE].x, Features[FSDKP_RIGHT_EYE].y);
}

  FSDK_DetectEyes Function

Detects a frontal face in an image and detects its eye centers.

C++ Syntax:

int FSDK_DetectEyes(HImage Image, FSDK_Features* FacialFeatures);

Delphi Syntax:

function FSDK_DetectEyes(Image: HImage; FacialFeatures: PFSDK_Features): integer;

C# Syntax:

int FSDK.DetectEyes(int Image, out FSDK.TPoint[] FacialFeatures);

VB Syntax:

Function FSDKVB_DetectEyes (ByVal Image As Long, ByRef FacialFeatures As TPoint) As Long

Java Syntax:

int FSDK.DetectEyes(HImage Image, FSDK_Features.ByReference FacialFeatures);

Android Syntax:

int FSDK.DetectEyes(HImage Image, FSDK_Features FacialFeatures);

CImage Syntax:

FSDK.TPoint[] FSDK.CImage.DetectEyes();

Parameters:

Image– handle of the image eye centers should be detected in.

FacialFeatures– pointer to the FSDK_Features array for receiving the detected eye centers.

Return Value:

Returns FSDKE_OK if successful.

  FSDK_DetectEyesInRegion Function

Detects eye centers in an image region returned by FSDK_DetectFace or FSDK_DetectMultipleFaces.

C++ Syntax:

int FSDK_DetectEyesInRegion(HImage Image, TFacePosition* FacePosition, FSDK_Features* FacialFeatures);

Delphi Syntax:

function FSDK_DetectEyesInRegion(Image: HImage; FacePosition: PFacePosition; FacialFeatures: PFSDK_Features): integer;

C# Syntax:

int FSDK.DetectEyesInRegion(int Image, ref FSDK.TFacePosition FacePosition, out FSDK.TPoint[] FacialFeatures);

VB Syntax:

Function FSDKVB_DetectEyesInRegion(ByVal Image As Long, ByRef FacePosition As TFacePosition, ByRef FacialFeatures As TPoint) As Long

Java Syntax:

int FSDK.DetectEyesInRegion(HImage Image, TFacePosition FacePosition, FSDK_Features.ByReference FacialFeatures);

Android Syntax:

int FSDK.DetectEyesInRegion(HImage Image, TFacePosition FacePosition, FSDK_Features FacialFeatures);

CImage Syntax:

FSDK.TPoint[] FSDK.CImage.DetectEyesInRegion(ref FSDK.TFacePosition FacePosition);

Parameters:

Image – handle of the image eye centers should be detected in.

FacePosition – pointer to the face position structure.

FacialFeatures – pointer to the FSDK_Features array for receiving the detected eye centers.

Return Value:

Returns FSDKE_OK if successful.

 

Next chapterDetected Facial Features

Contents

×

This site uses cookies to deliver our services and to help personalise and improve your experience. By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy. Your use of all Luxand's Products and Services is subject to these policies and terms.