SettingsForm.pas ( File view )

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

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, NCore, NExtractors, NMatchers, NUtils;

type
  TSettingsForm = class(TForm)
    lblMinIOD: TLabel;
    lblMaxIOD: TLabel;
    lblIOD: TLabel;
    tbMinIOD: TEdit;
    tbMaxIOD: TEdit;
    gbMatching: TGroupBox;
    lblMatchingThreshold: TLabel;
    tbMatchingThreshold: TEdit;
    lblMatchingAttempts: TLabel;
    tbMatchingAttempts: TEdit;
    gbMisc: TGroupBox;
    cbFlipImagesHorizontally: TCheckBox;
    cbFileNameAsRecordID: TCheckBox;
    cbSaveImages: TCheckBox;
    gbEnrollmentGeneralization: TGroupBox;
    lblEnrollStreamLength: TLabel;
    tbEnrollStreamLength: TEdit;
    btnDefault: TButton;
    btnOk: TButton;
    btnCancel: TButton;
    lblLiveliness: TLabel;
    tbLivenessThreshold: TEdit;
    cbUseLiveness: TCheckBox;
    gbFaceDetection: TGroupBox;
    lblFaceConfidenceTheshold: TLabel;
    tbFaceConfidence: TEdit;
    lblFaceQuality: TLabel;
    tbFaceQuality: TEdit;
    lblmatchingStream: TLabel;
    tbMatchingStreamLength: TEdit;
    lblMaxRecords: TLabel;
    tbMaxRecords: TEdit;
    GroupBox1: TGroupBox;
    lblImageCount: TLabel;
    tbTemplateCount: TEdit;
    cbFlipVertically: TCheckBox;
    Label1: TLabel;
    tbMaxRollDeviation: TEdit;
    Label2: TLabel;
    cbTemplateSizeEnrollment: TComboBox;
    Label3: TLabel;
    cbTemplateSizeMatching: TComboBox;
    procedure btnDefaultClick(Sender: TObject);
    procedure btnOkClick(Sender: TObject);
    procedure FormCreate(Sender: TObject);
  private
    _extractor: TNLExtractor;
    _matcher: TNMatcher;
  public
    property Extractor: TNLExtractor read _extractor write _extractor;
    property Matcher: TNMatcher read _matcher write _matcher;

    function TemplateSizeToIndex(templateSize: TNleTemplateSize): Integer;
    function IndexToTemplateSize(index: Integer): TNleTemplateSize;
  end;

implementation

{
$R *.dfm
}

procedure TSettingsForm.btnDefaultClick(Sender: TObject);
begin
 cbFlipImagesHorizontally.Checked := False;
 cbFlipVertically.Checked := False;
 cbFileNameAsRecordID.Checked := True;
 cbSaveImages.Checked := True;

 extractor.Reset;
 tbFaceConfidence.Text := Format('%f',[extractor.FaceConfidenceThreshold]);
 tbFaceQuality.Text := IntToStr(extractor.FaceQualityThreshold);
 tbMinIOD.Text := IntToStr(extractor.MinIOD);
 tbMaxIOD.Text := IntToStr(extractor.MaxIOD);
 tbMatchingThreshold.Text := MatchingThresholdToString(matcher.MatchingThreshold);
 tbMatchingAttempts.Text := '10';
 tbMatchingStreamLength.Text := '3';
 tbEnrollStreamLength.Text := '10';
 tbLivenessThreshold.Text := Format('%f',[extractor.LivenessThreshold]);
 tbTemplateCount.Text := '3';
 tbMaxRecords.Text := IntToStr(extractor.MaxRecordsInTemplate);
 tbMaxRollDeviation.Text := IntToStr(extractor.MaxRollAngleDeviation);

 cbTemplateSizeEnrollment.ItemIndex := TemplateSizeToIndex(nletsLarge);
 cbTemplateSizeMatching.ItemIndex := TemplateSizeToIndex(nletsMedium);
end;

procedure TSettingsForm.btnOkClick(Sender: TObject);
 var tmpInteger: Integer;
     tmpDouble: Double;
begin
 try
  tmpDouble := StrToFloat(tbFaceConfidence.Text);
  if (tmpDouble < 0) or (100 < tmpDouble) then
   raise Exception.Create('Invalid value for ''Face confidence threshold'', you have to specify a number between 0 and 100!');
  tmpInteger := StrToInt(tbMinIOD.Text);
  if (tmpInteger < 40) or (16384 < tmpInteger) then
   raise Exception.Create('Invalid value for ''Minimal IOD'', you  have to specify a number between 40 and 16384!');
  tmpInteger := StrToInt(tbMaxIOD.Text);
  if (tmpInteger < 40) or (16384 < tmpInteger) then
   raise Exception.Create('Invalid value for ''Maximal IOD'', you  have to specify a number between 40 and 16384!');
  tmpInteger := StrToInt(tbFaceQuality.Text);
  if (tmpInteger < 0) or (255 < tmpInteger) then
   raise Exception.Create('Invalid value for ''Face quality threshold'', you  have to specify a number between 0 and 255!');
  tmpInteger := StrToInt(tbMaxRollDeviation.Text);
  if (tmpInteger < 0) or (180 < tmpInteger) then
   raise Exception.Create('Invalid value for ''Max roll angle deviation'', you  have to specify a number between 0 and 180!');
  tmpDouble := StrToFloat(tbMatchingThreshold.Text);
  if (tmpDouble < 0) or (100 < tmpDouble) then
   raise Exception.Create('Invalid value for ''FAR'', you  have to specify a number between 0 and 100!');
  tmpInteger := StrToInt(tbMatchingAttempts.Text);
  if (tmpInteger < 1) or (30 < tmpInteger) then
   raise Exception.Create('Invalid value for ''Matching attempts'', you  have to specify a number between 1 and 30!');
  tmpDouble := StrToFloat(tbLivenessThreshold.Text);
  if (tmpDouble < 0) or (100 < tmpDouble) then
   raise Exception.Create('Invalid value for ''Liveness threshold'', you  have to specify a number between 0 and 100!');
  tmpInteger := StrToInt(tbMatchingStreamLength.Text);
  if (not cbUseLiveness.Checked) then
    begin
      if (tmpInteger < 1) or (5 < tmpInteger) then
        raise Exception.Create('Invalid value for ''Identification frame count'', you  have to specify a number between 1 and 5!');
    end
  else
    begin
      if ((tmpInteger < 10) or (tmpInteger > 25)) then
        raise Exception.Create('Please set the identification frame count to value between 10 and 25,' + #13#10
          + 'because the liveness check is enabled.');
    end;
  tmpInteger := StrToInt(tbEnrollStreamLength.Text);
  if (tmpInteger < 1) or (20 < tmpInteger) then
   raise Exception.Create('Invalid value for ''Enroll stream length'', you  have to specify a number between 1 and 20!');
  tmpInteger := StrToInt(tbMaxRecords.Text);
  if (tmpInteger < 1) or (16 < tmpInteger) then
   raise Exception.Create('Invalid value for ''Max records per template'', you  have to specify a number between 1 and 16');
  tmpInteger := StrToInt(tbTemplateCount.Text);
  if (tmpInteger < 3) then
   raise Exception.Create('Invalid value for ''Template count'', you  have to specify a number higher or equal to 3!');

    ModalResult := mrOk;
 except
  on E: Exception do
   MessageDlg(E.Message, mtError, [mbOK], 0);
 end;
end;

function TSettingsForm.TemplateSizeToIndex(templateSize: TNleTemplateSize): Integer;
begin
 Result := 0;
 case templateSize of
  nletsSmall:
    begin
    Result := 0;
    end;
  nletsMedium:
    begin
    Result := 1;
    end;
  nletsLarge:
    begin
    Result := 2;
    end;
 end;
end;

function TSettingsForm.IndexToTemplateSize(index: Integer): TNleTemplateSize;
begin
 Result := nletsSmall;
 case index of
  0:
    begin
    Result := nletsSmall;
    end;
  1:
    begin
    Result := nletsMedium;
    end;
  2:
    begin
    Result := nletsLarge;
    end;
 end;
end;

procedure TSettingsForm.FormCreate(Sender: TObject);
begin
 cbTemplateSizeEnrollment.Items.Add('Small');
 cbTemplateSizeEnrollment.Items.Add('Medium');
 cbTemplateSizeEnrollment.Items.Add('Large');

 cbTemplateSizeMatching.Items.Add('Small');
 cbTemplateSizeMatching.Items.Add('Medium');
 cbTemplateSizeMatching.Items.Add('Large');
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

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