{https://github.com/seetaface/SeetaFaceEngine}
unit STFintf;
interface
const
DetectDLL = 'seeta_fd_lib.dll';
AlignDLL = 'seeta_fa_lib.dll';
IdentifyDLL = 'seeta_fi_lib.dll';
type
PSTF_Image = ^STF_Image;
STF_Image = record
data: PByte;
width: Integer;
height: Integer;
channels: Integer;
end;
PSTF_Face = ^STF_Face;
STF_Face = record
left: Integer;
top: Integer;
right: Integer;
bottom: Integer;
score: double;
next: PSTF_Face;
end;
PLandMarks = ^LandMarks;
LandMarks = record
x: array[0..4] of Integer;
y: array[0..4] of Integer;
end;
{SeeTaFaceDetect}
function get_face_detector(modelPath: PAnsiChar): Pointer; cdecl; external DetectDLL;
procedure set_min_face_size(detector: Pointer; MinSize: integer); cdecl; external DetectDLL;
procedure set_score_thresh(detector: Pointer; ScoreThresh: Single); cdecl; external DetectDLL;
procedure set_image_pyramid_scale_factor(detector: Pointer; scale: Single); cdecl; external DetectDLL;
procedure set_window_step(detector: Pointer; xStep: integer; yStep: Integer); cdecl; external DetectDLL;
procedure free_detector(detector: Pointer); cdecl; external DetectDLL;
procedure free_face_list(root: PSTF_Face); cdecl; external DetectDLL;
function detect(detector: Pointer; img: PSTF_Image): PSTF_Face; cdecl; external DetectDLL;
{SeeTaFaceAlignMent}
function get_face_aligner(modelPath: PAnsiChar): Pointer; cdecl; external AlignDLL;
function STFalign(aligner: Pointer; img: PSTF_Image; faceRect: PSTF_Face): PLandMarks; cdecl; external AlignDLL name 'align';
procedure free_landmarks(root: PLandMarks); cdecl; external AlignDLL;
procedure free_aligner(detector: Pointer); cdecl; external AlignDLL;
{SeeTaFaceIdentification}
function get_face_identifier(ModelPath: PAnsiChar): Pointer; cdecl; external IdentifyDLL;
function crop_face(identifier: Pointer; img: PSTF_Image; marks: PLandMarks): PSTF_Image; cdecl; external IdentifyDLL;
function extract_feature(identifier: Pointer; img: PSTF_Image): PSingle; cdecl; external IdentifyDLL;
function extract_feature_with_crop(identifier: Pointer; img: PSTF_Image; marks: PLandMarks): PSingle; cdecl; external IdentifyDLL;
function calc_similarity(identifier: Pointer; featA: PSingle; featB: PSingle): Single; cdecl; external IdentifyDLL;
procedure free_image_data(img: PSTF_Image); cdecl; external IdentifyDLL;
procedure free_feature(featX: PSingle); cdecl; external IdentifyDLL;
procedure free_identifier(identifier: Pointer); cdecl; external IdentifyDLL;
//function calc_similarityX(featA: PSingle; featB: PSingle): Single; cdecl; external IdentifyDLL;
implementation
end.