3DiVi Face SDK  3.24.1
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Groups
VDT.FaceRecognition.SDK.RawSample Class Reference

Interface object that stores a captured face sample. More...

Classes

class  Angles
 Face orientation angles. More...
 
class  Rectangle
 Rectangle in an image. More...
 

Public Types

enum  SampleType { SampleType.SAMPLE_TYPE_FRONTAL = 0, SampleType.SAMPLE_TYPE_LEFT_PROFILE = 1, SampleType.SAMPLE_TYPE_RIGHT_PROFILE = 2 }
 Sample types (see also VDT.FaceRecognition.SDK.Capturer.CapturerType). More...
 
enum  ImageFormat { ImageFormat.IMAGE_FORMAT_JPG = 0, ImageFormat.IMAGE_FORMAT_PNG = 1, ImageFormat.IMAGE_FORMAT_TIF = 2, ImageFormat.IMAGE_FORMAT_BMP = 3 }
 Image formats for saving. More...
 
enum  FaceCutType { FaceCutType.FACE_CUT_BASE = 0, FaceCutType.FACE_CUT_FULL_FRONTAL = 1, FaceCutType.FACE_CUT_TOKEN_FRONTAL = 2 }
 Face cropping types. More...
 

Public Member Functions

Rectangle getRectangle ()
 Get a face bounding rectangle. Thread-safe. More...
 
List< PointgetLandmarks ()
 Get anthropometric landmarks. Only frontal samples. Thread-safe. More...
 
List< PointgetIrisLandmarks ()
 Get the characteristic points of the eyes. Only frontal samples. Thread-safe. More...
 
Point getLeftEye ()
 Get a point of the left eye. Only frontal samples. Thread-safe. More...
 
Point getRightEye ()
 Get a point of the right eye. Only frontal samples. Thread-safe. More...
 
Angles getAngles ()
 Get a face orientation. Only frontal samples. Thread-safe. More...
 
int getID ()
 Get a face ID. Thread-safe. More...
 
int getFrameID ()
 Get an ID of the frame, in which this RawSample is detected (for samples made with VideoWorker). Thread-safe. More...
 
bool hasOriginImage ()
 Does the sample store the original image (true for samples made with VideoWorker with enabled store_original_frame_in_raw_sample). Thread-safe. More...
 
float getScore ()
 Get the score of the detected face (for samples made with supported single-shot Capturers). Thread-safe. More...
 
float getFaceVisibilityScore ()
 Get the score of face visibility. Thread-safe. More...
 
RawImage getOriginalImage ()
 Get an original image. Throws an exception if a sample doesn’t contain an original image (check with hasOriginalImage (RawSample) first). Thread-safe. More...
 
SampleType getType ()
 Get a sample type. Thread-safe. More...
 
List< PointgetFaceCutRectangle (FaceCutType cut_type)
 Get a cropping rectangle (for preview) that will be used in RawSample.cutFaceImage. Thread-safe. More...
 
void cutFaceImage (Stream binary_stream, ImageFormat format, FaceCutType cut_type)
 Crop the face and save in the specified format. Thread-safe. More...
 
RawImage cutFaceRawImage (RawImage.Format color_model, FaceCutType cut_type)
 Crop face in RawImage format (with raw pixels). Thread-safe. More...
 
void cutFaceImage (RawImage original_image, Stream binary_stream, ImageFormat format, FaceCutType cut_type)
 Crop the face and save it in original size in the specified format. Thread-safe. More...
 
void save (Stream binary_stream, ImageFormat format)
 Save (serialize) the sample. Original image will not be saved (i.e. only the part of an image containing the face is saved). The format is platform-independent. Thread-safe. After saving, you can load it with FacerecService.loadRawSample. More...
 
void saveWithoutImage (Stream binary_stream, double space_translation_x=0, double space_translation_y=0, double space_scale=1)
 Save (serialize) all sample information except the image. You have to store the image on your own in order to pass it to the FacerecService.loadRawSampleWithoutImage for deserialization. If you transformed the image in some way, you can set the parameters of coordinate space transformation: (x, y) -> ( (x + space_translation_x) * space_scale, (y + space_translation_y) * space_scale ) that will be applied to the information about face position. Note that you must set parameters of the same transformation only once - either during serialization or during deserialization, otherwise transformation will be applied twice, which is wrong. The format is platform-independent. Thread-safe. After saving, you can load it with FacerecService.loadRawSampleWithoutImage. More...
 
RawSample downscaleToPreferredSize ()
 Clone this RawSample with an internal face image downscaled to preferred size and without an original image. In order to reduce memory consumption (both in RAM and after serialization).
At work Capturer and VideoWorker automatically downscale all RawSamples if downscale_rawsamples_to_preferred_size parameter is enabled (enabled by default), but it decreases the performance.
So it is recommended to disable downscale_rawsamples_to_preferred_size and use RawSample.downscaleToPreferredSize manually for RawSamples that you need to save or hold for a long time in RAM. More...
 
unsafe Context ToContext ()
 will transform RawSample into a container-Context More...
 
- Public Member Functions inherited from VDT.FaceRecognition.SDK.IDisposableObject
virtual void Dispose ()
 Release internal object.
 

Additional Inherited Members

- Properties inherited from VDT.FaceRecognition.SDK.IDisposableObject
bool isDisposed [get]
 True if internal object already disposed.
 

Detailed Description

Interface object that stores a captured face sample.

Member Enumeration Documentation

Face cropping types.

Enumerator
FACE_CUT_BASE 

Unspecified cropping (any sample type).

FACE_CUT_FULL_FRONTAL 

ISO/IEC 19794-5 Full Frontal (for ID, travel documents) (only frontal sample type).

FACE_CUT_TOKEN_FRONTAL 

ISO/IEC 19794-5 Token Frontal (fixed eye positions) (only frontal sample type).

Image formats for saving.

Enumerator
IMAGE_FORMAT_JPG 

JPEG (lossy compression).

IMAGE_FORMAT_PNG 

PNG (lossless compression).

IMAGE_FORMAT_TIF 

TIFF (lossless compression).

IMAGE_FORMAT_BMP 

BMP (no compression).

Sample types (see also VDT.FaceRecognition.SDK.Capturer.CapturerType).

Enumerator
SAMPLE_TYPE_FRONTAL 

The face is frontal-oriented.

SAMPLE_TYPE_LEFT_PROFILE 

The face is left-profile-oriented.

SAMPLE_TYPE_RIGHT_PROFILE 

The face is right-profile-oriented.

Member Function Documentation

void VDT.FaceRecognition.SDK.RawSample.cutFaceImage ( Stream  binary_stream,
ImageFormat  format,
FaceCutType  cut_type 
)
inline

Crop the face and save in the specified format. Thread-safe.

Parameters
[out]binary_streamOutput stream object for image saving.
[in]formatImage encoding format.
[in]cut_typeFace cropping types.
void VDT.FaceRecognition.SDK.RawSample.cutFaceImage ( RawImage  original_image,
Stream  binary_stream,
ImageFormat  format,
FaceCutType  cut_type 
)
inline

Crop the face and save it in original size in the specified format. Thread-safe.

Parameters
[in]original_imageImage that was used to create this sample.
[out]binary_streamOutput stream object for image saving.
[in]formatImage encoding format.
[in]cut_typeFace cropping type.
RawImage VDT.FaceRecognition.SDK.RawSample.cutFaceRawImage ( RawImage.Format  color_model,
FaceCutType  cut_type 
)
inline

Crop face in RawImage format (with raw pixels). Thread-safe.

Parameters
[in]color_modelImage color model.
[in]cut_typeFace cropping types.
Returns
RawImage with cropped face
RawSample VDT.FaceRecognition.SDK.RawSample.downscaleToPreferredSize ( )
inline

Clone this RawSample with an internal face image downscaled to preferred size and without an original image. In order to reduce memory consumption (both in RAM and after serialization).
At work Capturer and VideoWorker automatically downscale all RawSamples if downscale_rawsamples_to_preferred_size parameter is enabled (enabled by default), but it decreases the performance.
So it is recommended to disable downscale_rawsamples_to_preferred_size and use RawSample.downscaleToPreferredSize manually for RawSamples that you need to save or hold for a long time in RAM.

Returns
Created RawSample.
Angles VDT.FaceRecognition.SDK.RawSample.getAngles ( )
inline

Get a face orientation. Only frontal samples. Thread-safe.

Returns
Face orientation angles in degrees.
List<Point> VDT.FaceRecognition.SDK.RawSample.getFaceCutRectangle ( FaceCutType  cut_type)
inline

Get a cropping rectangle (for preview) that will be used in RawSample.cutFaceImage. Thread-safe.

Returns
4 points that are corners of a rectangle in the counterclockwise order starting from the upper left corner.
Parameters
[in]cut_typeFace cropping types.
float VDT.FaceRecognition.SDK.RawSample.getFaceVisibilityScore ( )
inline

Get the score of face visibility. Thread-safe.

Returns
One if face is fully visible,
zero if face is invisible,
otherwise - a number in the range [0 ... 1].
int VDT.FaceRecognition.SDK.RawSample.getFrameID ( )
inline

Get an ID of the frame, in which this RawSample is detected (for samples made with VideoWorker). Thread-safe.

Returns
Zero if this RawSample was made not with VideoWorker,
otherwise it's a nonnegative integer - id (that was returned by the VideoWorker.addVideoFrame) of the frame, in which this RawSample is detected.
int VDT.FaceRecognition.SDK.RawSample.getID ( )
inline

Get a face ID. Thread-safe.

Returns
  • A non-negative track id, if this sample was captured by a tracker, or
  • Any meaningless negative value, otherwise.
List<Point> VDT.FaceRecognition.SDK.RawSample.getIrisLandmarks ( )
inline

Get the characteristic points of the eyes. Only frontal samples. Thread-safe.

Returns
The vector of the positions of the points of the pupils and the boundaries of the eyelids in the original image.
List<Point> VDT.FaceRecognition.SDK.RawSample.getLandmarks ( )
inline

Get anthropometric landmarks. Only frontal samples. Thread-safe.

Returns
The vector of anthropometric points in the original image.
Point VDT.FaceRecognition.SDK.RawSample.getLeftEye ( )
inline

Get a point of the left eye. Only frontal samples. Thread-safe.

Returns
Point of the left eye.
RawImage VDT.FaceRecognition.SDK.RawSample.getOriginalImage ( )
inline

Get an original image. Throws an exception if a sample doesn’t contain an original image (check with hasOriginalImage (RawSample) first). Thread-safe.

Returns
Original image.
Rectangle VDT.FaceRecognition.SDK.RawSample.getRectangle ( )
inline

Get a face bounding rectangle. Thread-safe.

Returns
Rectangle bounding face on the original image.
Point VDT.FaceRecognition.SDK.RawSample.getRightEye ( )
inline

Get a point of the right eye. Only frontal samples. Thread-safe.

Returns
Point of the right eye.
float VDT.FaceRecognition.SDK.RawSample.getScore ( )
inline

Get the score of the detected face (for samples made with supported single-shot Capturers). Thread-safe.

Returns
One if this RawSample was made with an unsupported detector,
otherwise - a number in the range [0 ... 1].
SampleType VDT.FaceRecognition.SDK.RawSample.getType ( )
inline

Get a sample type. Thread-safe.

Returns
Type of the sample.
bool VDT.FaceRecognition.SDK.RawSample.hasOriginImage ( )
inline

Does the sample store the original image (true for samples made with VideoWorker with enabled store_original_frame_in_raw_sample). Thread-safe.

Returns
true, if it has original image, otherwise false.
void VDT.FaceRecognition.SDK.RawSample.save ( Stream  binary_stream,
ImageFormat  format 
)
inline

Save (serialize) the sample. Original image will not be saved (i.e. only the part of an image containing the face is saved). The format is platform-independent. Thread-safe. After saving, you can load it with FacerecService.loadRawSample.

Parameters
[out]binary_streamOutput stream object for saving the raw sample.
[in]formatImage encoding format.
void VDT.FaceRecognition.SDK.RawSample.saveWithoutImage ( Stream  binary_stream,
double  space_translation_x = 0,
double  space_translation_y = 0,
double  space_scale = 1 
)
inline

Save (serialize) all sample information except the image. You have to store the image on your own in order to pass it to the FacerecService.loadRawSampleWithoutImage for deserialization. If you transformed the image in some way, you can set the parameters of coordinate space transformation: (x, y) -> ( (x + space_translation_x) * space_scale, (y + space_translation_y) * space_scale ) that will be applied to the information about face position. Note that you must set parameters of the same transformation only once - either during serialization or during deserialization, otherwise transformation will be applied twice, which is wrong. The format is platform-independent. Thread-safe. After saving, you can load it with FacerecService.loadRawSampleWithoutImage.

Parameters
[out]binary_streamOutput stream object for saving the raw sample.
[in]space_translation_xCoordinate space transform parameter.
[in]space_translation_yCoordinate space transform parameter.
[in]space_scaleCoordinate space transform parameter.
unsafe Context VDT.FaceRecognition.SDK.RawSample.ToContext ( )
inline

will transform RawSample into a container-Context

Returns
container-Context