NMatchers.pas ( File view )

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

interface
 uses Windows, SysUtils, NUtils, NCore;

 const
  NM_MODE_GENERAL = 0;
  NM_MODE_DIGITALPERSONA_UAREU = 100;
  NM_MODE_BIOMETRIKA_FX2000 = 200;
  NM_MODE_BIOMETRIKA_FX3000 = 201;
  NM_MODE_KEYTRONIC_SECUREDESKTOP = 300;
  NM_MODE_IDENTIX_TOUCHVIEW = 400;
  NM_MODE_IDENTIX_DFR2090 = 401;
  NM_MODE_PRECISEBIOMETRICS_100CS = 500;
  NM_MODE_UPEK_TOUCHCHIP = 600;
  NM_MODE_IDENTICATORTECHNOLOGY_DF90 = 700;
  NM_MODE_ATMEL_FINGERCHIP = 900;
  NM_MODE_BMF_BLP100 = 1000;
  NM_MODE_SECUGEN_HAMSTER = 1100;
  NM_MODE_CROSSMATCH_VERIFIER300 = 1300;
  NM_MODE_NITGEN_FINGKEY_HAMSTER = 1400;
  NM_MODE_TESTECH_BIOI = 1500;
  NM_MODE_DIGENT_IZZIX = 1600;
  NM_MODE_STARTEK_FM200 = 1700;
  NM_MODE_FUJITSU_MBF200 = 1800;
  NM_MODE_FUTRONIC_FS80 = 1900;
  NM_MODE_LIGHTUNING_LTTC500 = 2000;
  NM_MODE_TACOMA_CMOS = 2100;


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

procedure NMatchersGetInfo(var info: TNLibraryInfo);

//-------------------------------------
// Types
//-------------------------------------

type
 TNMatcher = class(TObject)
  private
    hMatcher: Pointer;

    _identifyMatchingDetailsPointer: Pointer;
    _matchingThreshold: Integer;
    _scannerMode: Integer;
    _maximalRotation: Integer;
    _faceMatchingSpeed: TNlmSpeed;

    procedure MatchDetailsFree(var matchingDetailsPointer: Pointer);
  
    function GetMatchingThreshold(): Integer;
    function GetScannerMode: Integer;
    function GetMaximalRotation: Byte;
    function GetFaceMatchingSpeed: TNlmSpeed;

    procedure Initialize;
  public
    Constructor Create(); overload;
    Destructor  Destroy; override;

    property  Handle: Pointer read hMatcher;
    property  MatchingThreshold: Integer read _matchingThreshold;
    property  MaximalRotation: Integer read _maximalRotation;
    property  ScannerMode: Integer read _scannerMode;
    property  FaceMatchingSpeed: TNlmSpeed read _faceMatchingSpeed;
    
    procedure Reset();

    procedure CopyParameters(destMatcher: TNMatcher);

    procedure SetMatchingThreshold(value: Integer);
    procedure SetMaximalRotation(value: Byte);
    procedure SetScannerMode(value: Integer);
    procedure SetFaceMatchingSpeed(value: TNlmSpeed);

    procedure IdentifyStart(template: TArrayOfByte);
    function  IdentifyNext(template: TArrayOfByte;  var MatchDetails: TNMMatchDetails): LongInt;
    procedure IdentifyEnd;

    function Verify(template1: TArrayOfByte; template2: TArrayOfByte; var MatchDetails: TNMMatchDetails): LongInt;
  end;

implementation

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

 const
  dllName = 'NMatchers.dll';

  NMP_PART_NONE    = 0;
  NMP_PART_FINGERS = 10;
  NMP_PART_FACES   = 20;
  NFSM_PART_NFM    = 1;
  NLSM_PART_NLM    = 1;
  
  NMP_MODE = 1000;
  NMP_MATCHING_THRESHOLD = 100;
  NMP_MAXIMAL_ROTATION   = 201;
  NLMP_MATCHING_SPEED    = 10001;

//-------------------------------------
// External(functions form dll)
//-------------------------------------
{
$ifdef ver210
}
function  NMatchersGetInfoInternal(var info: TNLibraryInfo): Integer stdcall; external dllName name 'NMatchersGetInfoW';
{
$else
}
function  NMatchersGetInfoInternal(var info: TNLibraryInfo): Integer stdcall; external dllName name 'NMatchersGetInfoA';
{
$endif
}
function  NMCreate(var pHMatcher: Pointer): Integer stdcall; external dllName;
function  NMIdentifyStart(hMatcher: Pointer; pTempate: Pointer; templateSize: LongWord; var ppMatchDetails: Pointer): Integer stdcall; external dllName;
function  NMIdentifyNext(hMatcher: Pointer; pTemplate: Pointer; templateSize: LongWord; ppMatchDetails: Pointer; var pScore: LongInt): Integer stdcall; external dllName;
function  NMIdentifyEnd(hMatcher: Pointer): Integer stdcall; external dllName;
function  NMMatchDetailsFree(MatchDetailsPointer: Pointer): Integer stdcall;external dllName;
function  NMVerify(hMatcher: Pointer; template1: Pointer; template1Size: LongWord; tempalte2: Pointer; template2Size: LongWord; var ppMatchDetails: Pointer; var pScore: LongInt): Integer stdcall; external dllName;

procedure NMatchersGetInfo(var info: TNLibraryInfo);
 var res: Integer;
begin
 res := NMatchersGetInfoInternal(info);
 NCheck(res);
end;

//-----------------------------------------
// Internal. Functions for TNMatcher class
//-----------------------------------------

procedure CopyMatchDetails(var matchingDetails: TNMMatchDetails; IdentifyMatchingDetailsPointer: Pointer);
begin
 with matchingDetails do
  begin
   score := TNMMatchDetails(IdentifyMatchingDetailsPointer^).score;
   fingerDetails := TNMMatchDetails(IdentifyMatchingDetailsPointer^).fingerDetails;
   faceDetails := TNMMatchDetails(IdentifyMatchingDetailsPointer^).fingerDetails;
  end;
end;

procedure TNMatcher.Initialize;
begin
  _matchingThreshold := GetMatchingThreshold;
  _maximalRotation := GetMaximalRotation;
  _scannerMode := GetScannerMode;
  _faceMatchingSpeed := GetFaceMatchingSpeed;
end;
 
constructor TNMatcher.Create();
  var res: Integer;
begin
   inherited;
   res := NMCreate(hMatcher);
   NCheck(res);
   Initialize;
end;

destructor TNMatcher.Destroy;
begin
   NObjectFree(hMatcher);
   inherited;
end;

procedure TNMatcher.Reset();
begin
  NObjectReset(hMatcher);
  Initialize;
end;

procedure TNMatcher.IdentifyStart(template: TArrayOfByte);
 var res: Integer;
begin
 res := NMIdentifyStart(hMatcher, @(template[0]), Length(template), _identifyMatchingDetailsPointer);
 NCheck(res);
end;

function TNMatcher.IdentifyNext(template: TArrayOfByte;  var MatchDetails: TNMMatchDetails): LongInt;
 var res: Integer;
     tmp: LongInt;
begin
 tmp := 0;
 res := NMIdentifyNext(hMatcher, @(template[0]), Length(template), _identifyMatchingDetailsPointer, tmp);
 NCheck(res);
 Result := tmp;
 CopyMatchDetails(MatchDetails, _identifyMatchingDetailsPointer);
end;

procedure TNMatcher.IdentifyEnd;
 var res: Integer;
begin
 res := NMIdentifyEnd(hMatcher);
 NCheck(res);
 if (_identifyMatchingDetailsPointer <> nil) then MatchDetailsFree(_identifyMatchingDetailsPointer);
 _identifyMatchingDetailsPointer := nil;
end;
 
procedure TNMatcher.MatchDetailsFree(var matchingDetailsPointer: Pointer);
begin
    NMMatchDetailsFree(matchingDetailsPointer);
    matchingDetailsPointer := nil;
end;

function TNMatcher.Verify(template1: TArrayOfByte; template2: TArrayOfByte; var MatchDetails: TNMMatchDetails): LongInt;
 var res: Integer;
     tmp: LongInt;
begin
 tmp := 0;
 res := NMVerify(hMatcher, @(template1[0]), Length(template1), @(template2[0]), Length(template2), _identifyMatchingDetailsPointer, tmp);
 NCheck(res);
 Result := tmp;
 CopyMatchDetails(MatchDetails, _identifyMatchingDetailsPointer);
 if (_identifyMatchingDetailsPointer <> nil) then MatchDetailsFree(_identifyMatchingDetailsPointer);
 _identifyMatchingDetailsPointer := nil;
end;

procedure TNMatcher.CopyParameters(destMatcher: TNMatcher);
begin
 NObjectCopyParameters(destMatcher.hMatcher, hMatcher);
 Initialize;
end;

//-------------------------------------
// TNMatcher class setters/getters
//-------------------------------------

function TNMatcher.GetMaximalRotation:Byte;
 var res: LongWord;
begin
 GetParameter(hMatcher, NMP_PART_FINGERS + NFSM_PART_NFM, NMP_MAXIMAL_ROTATION, res);
 Result := res;
end;

procedure TNMatcher.SetMaximalRotation(value: Byte);
begin
 SetParameter(hMatcher, NMP_PART_FINGERS + NFSM_PART_NFM, NMP_MAXIMAL_ROTATION, value);
 _maximalRotation := value;
end;

function TNMatcher.GetFaceMatchingSpeed : TNlmSpeed;
 var res: LongWord;
begin
 GetParameter(hMatcher, NMP_PART_FACES + NLSM_PART_NLM, NLMP_MATCHING_SPEED, res);
 Result := TNlmSpeed(res);
end;

procedure TNMatcher.SetFaceMatchingSpeed(value: TNlmSpeed);
  var v: Integer;
begin
 v := Integer(value);
 SetParameter(hMatcher, NMP_PART_FACES + NLSM_PART_NLM, NLMP_MATCHING_SPEED, v);
 _faceMatchingSpeed := value;
end;

function TNMatcher.GetMatchingThreshold: Integer;
 var res: LongWord;
begin
 GetParameter(hMatcher, NMP_PART_NONE, NMP_MATCHING_THRESHOLD, res);
 Result := res;
end;

procedure TNMatcher.SetMatchingThreshold(value: Integer);
begin
 SetParameter(hMatcher, NMP_PART_NONE, NMP_MATCHING_THRESHOLD, value);
 _matchingThreshold := value;
end;

function TNMatcher.GetScannerMode: Integer;
  var tmp, res: LongWord;
begin
 tmp := NMP_PART_FINGERS + NFSM_PART_NFM;
 GetParameter(hMatcher, tmp, NMP_MODE, res);
 Result := res;
end;

procedure TNMatcher.SetScannerMode(value :Integer);
  var tmp: Integer;
begin
  tmp := NMP_PART_FINGERS + NFSM_PART_NFM;
  SetParameter(hMatcher, tmp, NMP_MODE, value);
  _scannerMode := value;
end;

end.
			
...
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

NMatchers.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