NExtractors.pas ( File view )

  • By adm.maniaco 2014-09-01
  • View(s):170
  • Download(s):11
  • Point(s): 2
			unit NExtractors;

interface
 uses Windows, SysUtils, NCore, NImages, NTemplates, NUtils;

 const
  NFE_MODE_GENERAL = 0;
  NFE_MODE_DIGITALPERSONA_UAREU = 100;
  NFE_MODE_BIOMETRIKA_FX2000 = 200;
  NFE_MODE_BIOMETRIKA_FX3000 = 201;
  NFE_MODE_KEYTRONIC_SECUREDESKTOP = 300;
  NFE_MODE_IDENTIX_TOUCHVIEW = 400;
  NFE_MODE_IDENTIX_DFR2090 = 401;
  NFE_MODE_PRECISEBIOMETRICS_100CS = 500;
  NFE_MODE_UPEK_TOUCHCHIP = 600;
  NFE_MODE_IDENTICATORTECHNOLOGY_DF90 = 700;
  NFE_MODE_ATMEL_FINGERCHIP = 900;
  NFE_MODE_BMF_BLP100 = 1000;
  NFE_MODE_SECUGEN_HAMSTER = 1100;
  NFE_MODE_CROSSMATCH_VERIFIER300 = 1300;
  NFE_MODE_NITGEN_FINGKEY_HAMSTER = 1400;
  NFE_MODE_TESTECH_BIOI = 1500;
  NFE_MODE_DIGENT_IZZIX = 1600;
  NFE_MODE_STARTEK_FM200 = 1700;
  NFE_MODE_FUJITSU_MBF200 = 1800;
  NFE_MODE_FUTRONIC_FS80 = 1900;
  NFE_MODE_LIGHTUNING_LTTC500 = 2000;
  NFE_MODE_TACOMA_CMOS = 2100;

//-------------------------------------
// External functions
//-------------------------------------

procedure NExtractorsGetInfo(var info: TNLibraryInfo);

//-------------------------------------
// Types
//-------------------------------------
type

    TNLExtractor = class
    private
     _handle: Pointer;

     _minIod: Integer;
     _maxIod: Integer;

     _faceConfidenceThreshold: Double;
     _faceQualityThreshold: Byte;
     _maxRecordsInTemplate: Integer;

     _useLiveliness: Boolean;
     _livelinessThreshold: Double;

     _favorLargestFace: Boolean;
     _templateSize: TNleTemplateSize;
     _maxRollAngleDeviation: Integer;
     
     function GetMinIOD(): Integer;
     function GetMaxIOD(): Integer;
     function GetFaceConfidenceThreshold(): Double;
     function GetUseLiveness(): Boolean;
     function GetLivenessThreshold(): Double;
     function GetMaxRecords(): Integer;
     function GetFaceQualityThreshold(): Byte;
     function GetFavorLargestFace(): Boolean;
     function GetTemplateSize: TNleTemplateSize;
     function GetMaxRollAngleDeviation(): Integer;

     procedure Initialize;
    public
     constructor Create(); overload;
     destructor  Destroy(); override;

     procedure Reset();

     property  Handle: Pointer read _handle;

     property  MinIOD: Integer read _minIod;
     property  MaxIOD: Integer read _maxIod;
     property  FaceConfidenceThreshold: Double read _faceConfidenceThreshold;
     property  UseLiveness: Boolean read _useLiveliness;
     property  LivenessThreshold: Double read _livelinessThreshold;
     property  MaxRecordsInTemplate: Integer read _maxRecordsInTemplate;
     property  FaceQualityThreshold: Byte read _faceQualityThreshold;
     property  FavorLargestFace: Boolean read _favorLargestFace;
     property  TemplateSize: TNleTemplateSize read _templateSize;
     property  MaxRollAngleDeviation: Integer read _maxRollAngleDeviation;
     
     procedure SetMinIOD(value: Integer);
     procedure SetMaxIOD(value: Integer);
     procedure SetFaceConfidenceThreshold(value: Double);
     procedure SetUseLiveness(value: Boolean);
     procedure SetLivenessThreshold(value: Double);
     procedure SetFaceQualityThreshold(value: Integer);
     procedure SetMaxRecords(value: Integer);
     procedure SetFavorLargestFace(value: Boolean);
     procedure SetTemplateSize(value: TNleTemplateSize);
     procedure SetMaxRollAngleDeviation(value: Integer);
     
     procedure CopyParameters(destinationExtractor: TNLExtractor);

     function  DetectFaces(image: TNImage): TArrayOfTNleFace;
     function  DetectFacialFeatures(image: TNImage; var face: TNleFace): TNleDetectionDetails;
     function  DetectFace(image: TNImage; var face: TNleFace): Boolean;

     procedure ExtractStart(numOfFrames: Integer);
     // base index returns the image index that should be shown to user
     function  ExtractNext(image: TNImage; var detectionDetails: TNleDetectionDetails; var baseIndex: Integer; var template: TNLTemplate): TNleExtractionStatus;
     
     function  Extract(image: TNImage; var template: TNLTemplate; var detectionDetails: TNleDetectionDetails): TNleExtractionStatus;
     function  ExtractUsingDetails(image: TNImage; var detectionDetails: TNleDetectionDetails; var template: TNLTemplate): TNleExtractionStatus;

     function  Generalize(templates: TArrayOfTNLTemplate; var baseIndex: Integer; var generalizedTemplate: TNLTemplate): TNleExtractionStatus;

     function  Compress(templateSrc: TNLTemplate; dstTemplateSize: TNleTemplateSize): TNLTemplate;

    end;

 type
  TNFExtractor = class
    private
     _handle: Pointer;

     _returnedImage: TNfeReturnedimage;
     _useQuality: boolean;
     _qualityThreshold: Integer;
     _scannerMode: Integer;
     _templateSize: TNfeTemplateSize;
     _generalizationThreshold: Integer;
     _generalizationMaximalRotation: Byte;

     function GetScannerMode: Integer;
     function GetUseQuality: Boolean;
     function GetReturnedImage: TNfeReturnedimage;
     function GetTemplateSize: TNfeTemplateSize;
     function GetQualityThreshold: Integer;
     function GetGeneralizationMaximalRotation: Byte;
     function GetGeneralizationThreshold: Integer;

     procedure Initialize;
    public
     Constructor Create;
     Destructor  Destroy; override;

     procedure Reset();

     property  Handle: Pointer read _handle;

     property  ReturnedImage: TNfeReturnedimage read _returnedImage;
     property  UseQuality: Boolean read _useQuality;
     property  QualityThreshold: Integer read _qualityThreshold;
     property  ScannerMode: Integer read _scannerMode;
     property  TemplateSize: TNfeTemplateSize read _templateSize;
     property  GeneralizationThreshold: Integer read _generalizationThreshold;
     property  GeneralizationMaximalRotation: Byte read _generalizationMaximalRotation;

     procedure SetScannerMode(mode: Integer);
     procedure SetUseQuality(value: Boolean);
     procedure SetReturnedImage(value: TNfeReturnedimage);
     procedure SetTemplateSize(value: TNfeTemplateSize);
     procedure SetQualityThreshold(value: Integer);
     procedure SetGeneralizationMaximalRotation(value: Byte);
     procedure SetGeneralizationThreshold(value: Integer);

     function  Extract(image: TNImage; position, impression: Integer; var template: TNFRecord): TNfeExtractionStatus;
     function  Generalize(templates: TArrayOfTNFRecord; var baseTemplateIndex: Integer; var extractionStatus: TNfeExtractionStatus): TNFRecord;

     procedure CopyParameters(destinationExtractor: TNFExtractor);
     
    end;


implementation

//-------------------------------------
// Constants
//-------------------------------------

const
  dllName = 'NExtractors.dll';

  NLEP_MIN_IOD                   = 10101;
  NLEP_MAX_IOD                   = 10102;
  NLEP_FACE_CONFIDENCE_THRESHOLD = 10103;
  NLEP_FAVOR_LARGEST_FACE        = 10104;
  NLEP_MAX_ROLL_ANGLE_DEVIATION  = 10105;
  NLEP_FACE_QUALITY_THRESHOLD    = 10350;
  NLEP_TEMPLATE_SIZE             = 10360;
  NLEP_USE_LIVENESS_CHECK        = 10402;
  NLEP_LIVENESS_THRESHOLD        = 10403;
  NLEP_MAX_RECORDS_PER_TEMPLATE  = 10408;

  NFEP_TEMPLATE_SIZE             = 100;
  NFEP_RETURNED_IMAGE            = 190;
  NFEP_GENERALIZATION_THRESHOLD  = 300;
  NFEP_GENERALIZATION_MAXIMAL_ROTATION = 301;
  NFEP_MODE                      = 1000;
  NFEP_USE_QUALITY               = 900;
  NFEP_QUALITY_THRESHOLD         = 910;

//-------------------------------------
// External functions (from dll)
//-------------------------------------

{
$ifdef ver210
}
function  NExtractorsGetInfoInternal(var info: TNLibraryInfo): Integer stdcall; external dllName name 'NExtractorsGetInfoW';
{
$else
}
function  NExtractorsGetInfoInternal(var info: TNLibraryInfo): Integer stdcall; external dllName name 'NExtractorsGetInfoA';
{
$endif
}
function  NleExtractNextEx(hExtractor: Pointer; hImage: Pointer; var pDetectionDetails: TNleDetectionDetails; var baseFrameIndex: Integer; var template: Pointer; var pStatus: TNleExtractionStatus): Integer stdcall; external dllName;
function  NleCreate(var hExtractor: Pointer): Integer; stdcall; external dllName;
function  NleDetectFace(hExtractor: Pointer; hImage: Pointer; var pDetected: Integer; var pFace: TNleFace): Integer stdcall; external dllName;
function  NleDetectFaces(hExtractor: Pointer; hImage: Pointer; var pFaceCount: Integer; var pArFaces: Pointer): Integer stdcall; external dllName;
function  NleDetectFacialFeatures(hExtractor: Pointer; hImage: Pointer; var pFace: TNleFace; var pDetDetails: TNleDetectionDetails): Integer stdcall; external dllName;
function  NleExtractStart(hExtractor: Pointer; durationInFrames: Integer): Integer stdcall; external dllName;
function  NleExtract(hExtractor: Pointer; hImage: Pointer; var pDetectionDetails: TNleDetectionDetails; var extrStatus: TNleExtractionStatus; template: Pointer): Integer stdcall; external dllName;
function  NleCompress(hExtractor: Pointer; firstTemplate: Pointer; var secondTemplate : Pointer): Integer stdcall; external dllName; 
function  NleCompressEx(firstTemplate: Pointer; templateSize: TNleTemplateSize; var secondTemplate: Pointer): Integer stdcall; external dllName;
function  NleExtractUsingDetails(hExtractor: Pointer; hImage: Pointer; var detDetails: TNleDetectionDetails; var extrStatus: TNleExtractionStatus; var template: Pointer): Integer stdcall; external dllName;
function  NleGeneralizeEx(HExtractor: Pointer; templateCount: LongInt; arTemplates: Pointer; var extractionStatus: TNleExtractionStatus; var baseTemplateIndex: Integer; var resultTemplate: Pointer): Integer stdcall; external dllName;

function  NfeCreate(var pHExtractor: Pointer): Integer stdcall; external dllName;
function  NfeExtract(pHExtractor: Pointer; hImage: Pointer; position: Integer; impressionType: Integer; var extractionStatus: TNfeExtractionStatus; var pHRecord: Pointer): Integer stdcall; external dllName;
function  NfeGeneralizeEx(hExtractor: Pointer; recordCount: LongInt; records: Pointer; var extractionStatus: TNfeExtractionStatus; var pBaseTemplateIndex: LongInt;  var pHRecord: Pointer): Integer stdcall
...
...
(Not finished, please download and read the complete file)
			
...
Expand> <Close

Want complete source code? Download it here

Point(s): 2

Download
0 lines left, continue to read
Sponsored links

File list

Tips: You can preview the content of files by clicking file names^_^
Name Size Date
Aboutform.dcu7.81 kB29-05-10 03:22
AboutForm.dfm59.86 kB02-04-10 14:37
AboutForm.pas2.79 kB02-04-10 14:37
DataBase.dcu10.72 kB29-05-10 02:56
DataBase.pas7.02 kB02-04-10 14:37
NCore.dcu12.55 kB29-05-10 02:56
NCore.pas11.17 kB02-04-10 14:37
NDeviceManager.dcu24.08 kB29-05-10 02:56
NDeviceManager.pas20.58 kB26-05-10 01:21
NExtractors.dcu26.38 kB29-05-10 02:56
NExtractors.pas22.97 kB02-04-10 14:37
NImages.dcu18.89 kB29-05-10 02:56
NImages.pas16.86 kB02-04-10 14:37
NLicensing.dcu1.73 kB29-05-10 02:56
NLicensing.pas2.27 kB02-04-10 14:37
NMatchers.dcu10.16 kB29-05-10 02:56
NMatchers.pas8.69 kB02-04-10 14:37
NTemplates.dcu13.67 kB29-05-10 02:56
NTemplates.pas10.28 kB02-04-10 14:37
NUtils.dcu17.47 kB29-05-10 02:56
NUtils.pas14.14 kB02-04-10 14:37
SQLite3.dcu10.79 kB29-05-10 02:56
sqlite3.dll493.92 kB02-04-10 14:37
SQLite3.pas13.07 kB02-04-10 14:37
SQLiteTable3.dcu49.60 kB29-05-10 02:56
SQLiteTable3.pas44.43 kB02-04-10 14:37
<SQLite>0.00 B29-05-10 03:00
DataBase.pas.~1~7.02 kB02-04-10 14:37
DataBase.pas.~2~7.02 kB26-05-10 01:49
DataBase.pas.~3~7.03 kB26-05-10 01:51
NDeviceManager.pas.~1~20.57 kB02-04-10 14:37
<__history>0.00 B29-05-10 03:00
<Bibliotecas>0.00 B29-05-10 03:00
CameraForm.dcu7.54 kB29-05-10 03:22
CameraForm.dfm172.63 kB02-04-10 14:37
CameraForm.pas2.57 kB02-04-10 14:37
DataBase.dcu10.98 kB29-05-10 03:22
DataBase.pas7.02 kB02-04-10 14:37
EnrollmentForm.dcu4.85 kB29-05-10 03:22
EnrollmentForm.dfm171.08 kB02-04-10 14:37
EnrollmentForm.pas577.00 B02-04-10 14:37
FacesSamplePas.cfg473.00 B02-04-10 14:37
FacesSamplePas.dof2.57 kB02-04-10 14:37
FacesSamplePas.dpr1.00 kB02-04-10 14:37
FacesSamplePas.dproj5.96 kB29-05-10 03:20
FacesSamplePas.dproj.20074.74 kB02-04-10 14:37
FacesSamplePas.dproj.local62.00 B29-05-10 03:21
FacesSamplePas.identcache1.19 kB29-05-10 03:22
FacesSamplePas.res78.90 kB29-05-10 03:20
fPrincipal.dcu53.36 kB29-05-10 03:13
fPrincipal.dfm176.14 kB29-05-10 03:05
fPrincipal.pas47.37 kB29-05-10 03:05
MainForm.dcu53.56 kB29-05-10 03:22
MainForm.dfm176.34 kB29-05-10 02:38
MainForm.pas47.42 kB29-05-10 02:54
NCore.dcu12.56 kB29-05-10 03:15
NDeviceManager.dcu24.09 kB29-05-10 03:15
Neurotechnology.bmp19.17 kB02-04-10 14:37
Neurotechnology.ico77.80 kB02-04-10 14:37
NExtractors.dcu26.39 kB29-05-10 03:15
NImages.dcu18.90 kB29-05-10 03:15
NLicensing.dcu1.74 kB29-05-10 03:15
NMatchers.dcu10.17 kB29-05-10 03:15
NTemplates.dcu13.68 kB29-05-10 03:15
NUtils.dcu17.48 kB29-05-10 03:15
SettingsForm.dcu15.43 kB29-05-10 03:22
SettingsForm.dfm177.53 kB02-04-10 14:37
SettingsForm.pas7.09 kB02-04-10 14:37
SQLite3.dcu10.80 kB29-05-10 03:15
SQLiteTable3.dcu49.61 kB29-05-10 03:15
FacesSamplePas.dpr.~1~1.00 kB02-04-10 14:37
FacesSamplePas.dpr.~2~1.01 kB29-05-10 03:02
FacesSamplePas.dpr.~3~411.00 B29-05-10 03:02
fPrincipal.dfm.~1~176.34 kB29-05-10 02:38
fPrincipal.dfm.~2~176.35 kB29-05-10 03:02
fPrincipal.dfm.~3~176.32 kB29-05-10 03:04
fPrincipal.pas.~1~47.42 kB29-05-10 03:01
fPrincipal.pas.~2~47.59 kB29-05-10 03:02
fPrincipal.pas.~3~47.58 kB29-05-10 03:04
fPrincipal.pas.~4~47.43 kB29-05-10 03:05
MainForm.dfm.~1~176.32 kB02-04-10 14:37
MainForm.dfm.~2~176.34 kB26-05-10 01:10
MainForm.dfm.~3~176.34 kB26-05-10 01:45
MainForm.dfm.~4~176.35 kB26-05-10 23:51
MainForm.dfm.~5~176.35 kB27-05-10 01:38
MainForm.dfm.~6~176.35 kB29-05-10 01:37
MainForm.pas.~1~45.50 kB02-04-10 14:37
MainForm.pas.~2~45.50 kB26-05-10 01:26
MainForm.pas.~3~45.64 kB26-05-10 01:45
MainForm.pas.~4~47.41 kB27-05-10 00:51
MainForm.pas.~5~47.42 kB27-05-10 01:18
MainForm.pas.~6~47.42 kB29-05-10 01:40
<__history>0.00 B29-05-10 03:16
<Biometria>0.00 B0 0%
...
Sponsored links

NExtractors.pas (1.58 MB)

Need 2 point
Your Point(s)

Your Point isn't enough.

Get point immediately by PayPal

More(Debit card / Credit card / PayPal Credit / Online Banking)

Submit your source codes. Get more point

LOGIN

Don't have an account? Register now
Need any help?
Mail to: support@codeforge.com

切换到中文版?

CodeForge Chinese Version
CodeForge English Version

Where are you going?

^_^"Oops ...

Sorry!This guy is mysterious, its blog hasn't been opened, try another, please!
OK

Warm tip!

CodeForge to FavoriteFavorite by Ctrl+D