Page 3 of 4

APIs differences betwn FingerExtractor & FingerFastExtractor

PostPosted: Aug 14, 2014 16:58
by Amitm
Hi All:

I have been using Fingerprint Extractor but recently obtained a license for Fast Fingerprint Extractor. I was wondering if there is any API difference between the two components. Also is there any sample code for Fast Fingerprint Extractor..

Thanks,

Amit

Admin: merged to "Fingerprint enrollment questions"

Re: APIs differences betwn FingerExtractor & FingerFastExtra

PostPosted: Aug 21, 2014 11:14
by Martynas
Amitm wrote:Hi All:

I have been using Fingerprint Extractor but recently obtained a license for Fast Fingerprint Extractor. I was wondering if there is any API difference between the two components. Also is there any sample code for Fast Fingerprint Extractor..

Thanks,

Amit

Hello,

there are no API differences. If you want to use the Fast Finger Extractor license in your application, then you need to obtain "Biometrcis.FingerExtractionFast" component.

Finger Identification takes too much time

PostPosted: Oct 06, 2014 16:41
by limetech
Hi everyone.

I am new to this forum.

I am having trouble with Verifinger SDK Finger Identification.

I have purchased the Verifinger Standard SDK and I have successfully enrolled fingerprints from users using the Nitgen Hamster DX II.

I have used the code within the "TutorialsBiometricsCSBiometrics.vs2012.sln" solution, more specifically the "EnrollFingerFromScannerCS.vs2012" project.

My problem is that when I try to use the code of the "IdentifyFingerCS.vs2012" in the same solution, the identification of the user takes too much time (for 50 users, about a minute).

The matching threshold is set to 48 and the matching speed is set to High.

What could be a possible solution to this problem as I have seen that the identification should not last more than some seconds?

Thank you in advance for your kind attention to my post.

Admin: merged to "Fingerprint enrollment questions"

Re: Finger Identification takes too much time

PostPosted: Oct 10, 2014 12:37
by Martynas
limetech wrote:Hi everyone.

I am new to this forum.

I am having trouble with Verifinger SDK Finger Identification.

I have purchased the Verifinger Standard SDK and I have successfully enrolled fingerprints from users using the Nitgen Hamster DX II.

I have used the code within the "TutorialsBiometricsCSBiometrics.vs2012.sln" solution, more specifically the "EnrollFingerFromScannerCS.vs2012" project.

My problem is that when I try to use the code of the "IdentifyFingerCS.vs2012" in the same solution, the identification of the user takes too much time (for 50 users, about a minute).

The matching threshold is set to 48 and the matching speed is set to High.

What could be a possible solution to this problem as I have seen that the identification should not last more than some seconds?

Thank you in advance for your kind attention to my post.

Hello,

answer was sent by email. The issue was related to the fact that the measurement of the identification time was done together with the extraction times. As teh Face Extractor license was used, then the extraction of one face image was done in 1.34 seconds, what leads to situation that 50 images are extracted approximately in one minute.

Minutiae Verifinger 4.2 in Megamatcher 3.1

PostPosted: Nov 24, 2014 13:34
by tekofer
as I can get the same minutiae generated in VeriFinger 4.2 but using MegaMatcher 3.1?

Admin: merged to "Fingerprint enrollment questions"

Re: Minutiae Verifinger 4.2 in Megamatcher 3.1

PostPosted: Nov 24, 2014 13:37
by Martynas
tekofer wrote:as I can get the same minutiae generated in VeriFinger 4.2 but using MegaMatcher 3.1?

Hello,

could you please explain what do you mean?
If you mean if it is possible to use VF4.2 template sin the MM 3.1, then answer is yes, it is possible. You will need to read VF 4.2 template as new NFRecord in MM 3.1 and save it.

Enrolling multiple finger prints on one call

PostPosted: Nov 26, 2014 10:39
by kumaranvram
Hi,

I took this code from the sample app that came with the SDK trail.

Code: Select all
//Creating a Subject
private NSubject createSubject(NTemplate template, String id) throws IOException {
        NSubject subject = new NSubject();
        subject.setTemplate(template);
        subject.setId(id);
        return subject;
}

//Enrolling a subject

this.candidateSubject = createSubject(template, id);
NBiometricTask enrollTask = mBiometricClient.createTask(EnumSet.of(NBiometricOperation.ENROLL), this.candidateSubject);
mBiometricClient.performTask(enrollTask, NBiometricOperation.ENROLL, completionHandler);



This helps me enroll a one particular fingerprint to the app. Is there a way I can enroll multiple finger prints with one enroll operation itself, or should I be iterating through multiple finger prints to enroll each one of those one by one?

Thanks for the help!

-Kumaran

Admin: merged to "Fingerprint enrollment questions"

Re: Enrolling multiple finger prints on one call

PostPosted: Nov 27, 2014 11:04
by Martynas
kumaranvram wrote:Hi,

I took this code from the sample app that came with the SDK trail.

Code: Select all
//Creating a Subject
private NSubject createSubject(NTemplate template, String id) throws IOException {
        NSubject subject = new NSubject();
        subject.setTemplate(template);
        subject.setId(id);
        return subject;
}

//Enrolling a subject

this.candidateSubject = createSubject(template, id);
NBiometricTask enrollTask = mBiometricClient.createTask(EnumSet.of(NBiometricOperation.ENROLL), this.candidateSubject);
mBiometricClient.performTask(enrollTask, NBiometricOperation.ENROLL, completionHandler);



This helps me enroll a one particular fingerprint to the app. Is there a way I can enroll multiple finger prints with one enroll operation itself, or should I be iterating through multiple finger prints to enroll each one of those one by one?

Thanks for the help!

-Kumaran

Hi,

do you mean multiple fingerprints of the same person, or you mean enrolling a multiple fingerprints of different persons?

Re: Enrolling multiple finger prints on one call

PostPosted: Nov 27, 2014 11:28
by kumaranvram
Multiple finger prints of multiple people.

Re: Enrolling multiple finger prints on one call

PostPosted: Dec 01, 2014 09:38
by Martynas
kumaranvram wrote:Multiple finger prints of multiple people.

Hello,

you can create several NSubjects (for different persons) and add them to enrollment task. Then execute this task.

Code: Select all
NBiometricTask enrollTask = mBiometricClient.createTask(EnumSet.of(NBiometricOperation.ENROLL), null);
enrollTask.Subjects.Add(nsubject); //repeat this line several times for different NSubject adding;
mBiometricClient.performTask(enrollTask, NBiometricOperation.ENROLL, completionHandler);

Fingerprint Quality Check

PostPosted: Dec 10, 2014 07:19
by Vidya Sagar Reddy
Can you please let me know, how to check the Quality of the Fingerprint captured using the TazTag android tablet, using the mega matcher android SDK.

As we are getting the very fe minutia error while creating template for the low quality images.

Admin: merged to "Fingerprint enrollment questions"

Re: Fingerprint Quality Check

PostPosted: Dec 10, 2014 12:29
by Martynas
Vidya Sagar Reddy wrote:Can you please let me know, how to check the Quality of the Fingerprint captured using the TazTag android tablet, using the mega matcher android SDK.

As we are getting the very fe minutia error while creating template for the low quality images.

Hi,

The SDK provides the NFIQ library, which is enabled by the FingerClient license, and which allows to get the finger image quality in NIST values (from 1 to 5). We recommend to use images, which quality is 1 or 2.

Re: Fingerprint Quality Check

PostPosted: Dec 10, 2014 12:38
by Vidya Sagar Reddy
We are using the 4.5 SDK, is this NFIQ libary and method to check the quality exists in this version?

We tested using the method getNFIQQuality which is there in NFAttributes class

but it is returning byte, whatever image we pass it is returning the value 255, which method will return the NIST quality values (from 1 to 5)

Can u please suggest us the method which returns the NIST quality value (from 1 to 5) in 4.5 version SDK.

Re: Fingerprint Quality Check

PostPosted: Dec 11, 2014 09:48
by Martynas
Vidya Sagar Reddy wrote:We are using the 4.5 SDK, is this NFIQ libary and method to check the quality exists in this version?

We tested using the method getNFIQQuality which is there in NFAttributes class

but it is returning byte, whatever image we pass it is returning the value 255, which method will return the NIST quality values (from 1 to 5)

Can u please suggest us the method which returns the NIST quality value (from 1 to 5) in 4.5 version SDK.

check the tutorial EvaluateFingerQuality

Re: Fingerprint Quality Check

PostPosted: Dec 18, 2014 11:39
by arslan1
Can you please let me know, how to check the Quality of the Fingerprint captured using the TazTag android tablet, using the mega matcher android SDK.

As we are getting the very fe minutia error while creating template for the low quality images

_________________
arslan1

Re: Fingerprint Quality Check

PostPosted: Dec 19, 2014 08:34
by Martynas
arslan1 wrote:Can you please let me know, how to check the Quality of the Fingerprint captured using the TazTag android tablet, using the mega matcher android SDK.

As we are getting the very fe minutia error while creating template for the low quality images

Hi,

check tutorial EvaluateFingerQuality. It shows how to use the fingerprint image to get the quality of it.

Re: Fingerprint enrollment questions

PostPosted: Dec 30, 2014 11:31
by kumaranvram
Hi,

I get the following error while my Android app tries to capture the fingerprint:
Code: Select all
12-30 16:54:49.116    6003-6847/com.muzima.biometric E/Core/ErrorSuppressedīš• Libusb error
    External error: 536870929
            at ftrScanOpenDeviceOnInterface


The Code is:
Code: Select all
        String TAG = "FingerPrintIdentification";
        mBiometricClient = new NBiometricClient();
        NSubject subject = new NSubject();
        NFinger finger = new NFinger();

        mBiometricClient.setUseDeviceManager(true);
        NDeviceManager deviceManager = mBiometricClient.getDeviceManager();
        deviceManager.setDeviceTypes(EnumSet.of(NDeviceType.FINGER_SCANNER));
        mBiometricClient.initialize();

        NDeviceManager.DeviceCollection devices = deviceManager.getDevices();
        if (devices.size() > 0) {
            Log.d(TAG, "Found %d fingerprint scanner\n", devices.size());
        } else {
            Log.d(TAG, "Device unavailable");
            return;
        }


The app does not recognize the device and logs "Device unavailable".

I am sure that the finger print device is working; I tested it with the FingerprintDemoApplication for Mac and it works when connected to my machine. I use a Futronic FS80 fingerprint scanner device.

Any idea how to solve this error?

Thanks,
Kumaran

Re: Fingerprint enrollment questions

PostPosted: Dec 31, 2014 13:07
by vaidasz
kumaranvram wrote:Hi,

I get the following error while my Android app tries to capture the fingerprint:
Code: Select all
12-30 16:54:49.116    6003-6847/com.muzima.biometric E/Core/ErrorSuppressedīš• Libusb error
    External error: 536870929
            at ftrScanOpenDeviceOnInterface


The Code is:
Code: Select all
        String TAG = "FingerPrintIdentification";
        mBiometricClient = new NBiometricClient();
        NSubject subject = new NSubject();
        NFinger finger = new NFinger();

        mBiometricClient.setUseDeviceManager(true);
        NDeviceManager deviceManager = mBiometricClient.getDeviceManager();
        deviceManager.setDeviceTypes(EnumSet.of(NDeviceType.FINGER_SCANNER));
        mBiometricClient.initialize();

        NDeviceManager.DeviceCollection devices = deviceManager.getDevices();
        if (devices.size() > 0) {
            Log.d(TAG, "Found %d fingerprint scanner\n", devices.size());
        } else {
            Log.d(TAG, "Device unavailable");
            return;
        }


The app does not recognize the device and logs "Device unavailable".

I am sure that the finger print device is working; I tested it with the FingerprintDemoApplication for Mac and it works when connected to my machine. I use a Futronic FS80 fingerprint scanner device.

Any idea how to solve this error?

Thanks,
Kumaran


Hello Kumaran,

Do you get the same issue using (unmodified) VeriFinger sample provided with SDK (comes with multibiometric-sample.apk)?
Send the issue description to support@neurotechnology.com. Also provide the full log that produces the issue. Let us know SDK revision number that you are using (it could be found in a text file of SDK root folder).

Re: Fingerprint enrollment questions

PostPosted: Jan 02, 2015 10:24
by kumaranvram
It is working fine on the Sample app that came along with the SDK.
But I am not sure why it is not working on my app.

Product revision number: 123025

Re: Fingerprint enrollment questions

PostPosted: Jan 02, 2015 15:25
by vaidasz
kumaranvram wrote:It is working fine on the Sample app that came along with the SDK.
But I am not sure why it is not working on my app.

Product revision number: 123025


Hello,

Please send the information I asked in previous post to support@neurotechnology.com.

Re: Fingerprint enrollment questions

PostPosted: Jan 05, 2015 07:09
by kumaranvram
Hi,

I will send the information to the specified mail address.

Since morning today, the app is not able to get the license for VeriFinger. I tried with the Sample App that comes along with the SDK as well. It is not able to obtain the license only for VeriFinger. The sample apps like VeriLook and VeriSpeak are able to obtain the license.

Could you please help?

Thanks!

Re: Fingerprint enrollment questions

PostPosted: Jan 05, 2015 08:46
by Vytautas
kumaranvram wrote:Hi,

I will send the information to the specified mail address.

Since morning today, the app is not able to get the license for VeriFinger. I tried with the Sample App that comes along with the SDK as well. It is not able to obtain the license only for VeriFinger. The sample apps like VeriLook and VeriSpeak are able to obtain the license.

Could you please help?

Thanks!


Hello,

concerning license issues, please send email to support@neurotechnology.com and include details like diagnostic report, licenses used, hardware.id, revision number of SDK, trial/non-trial.

ENROLL WITH DUPLICATE CHECK

PostPosted: Jan 06, 2015 09:14
by sumit
I"m currently using Neurotec_Biometric_5_0_SDK_Trial.
I am trying to enroll finger print with duplicate check using NServer.
I am using java samples provided in SDK.

Enrollment on Nserver is working if ENROLL WITH DUPLICATE CHECK flag is false. But if i try to enroll with ENROLL WITH DUPLICATE CHECK flag true; enrollment is failing with error "Invalid operations".

Complete java stack strace is as follows :

Code: Select all
 java.lang.RuntimeException: One or more errors occurred
   at com.neurotec.lang.NResult.checkAll(NResult.java:323)
   at com.neurotec.lang.NResult.raiseError(NResult.java:333)
   at com.neurotec.lang.NResult.check(NResult.java:234)
   at com.neurotec.biometrics.NBiometricEngine.enroll(NBiometricEngine.java:265)
   at com.neurotec.tutorials.biometrics.EnrollToSQLiteDatabase.main(EnrollToSQLiteDatabase.java:80)
Caused by: com.neurotec.util.concurrent.NAggregateExecutionException: One or more errors occurred
   at com.neurotec.util.concurrent.ConcurrentUtilErrorCreator.create(ConcurrentUtilErrorCreator.java:17)
   at com.neurotec.lang.ChainedErrorCreator.create(ChainedErrorCreator.java:22)
   at com.neurotec.lang.NError.get(NError.java:174)
   at com.neurotec.lang.NError.get(NError.java:191)
   at com.neurotec.lang.NError.getLast(NError.java:205)
   at com.neurotec.lang.NResult.checkUnchecked(NResult.java:245)
   ... 4 more
Caused by: com.neurotec.lang.NIllegalArgumentException: Invalid operations
   at com.neurotec.lang.RuntimeErrorCreator.create(RuntimeErrorCreator.java:22)
   at com.neurotec.lang.ChainedErrorCreator.create(ChainedErrorCreator.java:22)
   at com.neurotec.lang.NError.get(NError.java:174)
   at com.neurotec.lang.NError.get(NError.java:168)
   ... 7 more
 


Please let me know that ENROLL WITH DUPLICATE CHECK option is supported with NServer or not.

Thanks
Sumit

Admin: merged to "Fingerprint enrollment questions"

Re: ENROLL WITH DUPLICATE CHECK

PostPosted: Jan 08, 2015 12:21
by Martynas
sumit wrote:I"m currently using Neurotec_Biometric_5_0_SDK_Trial.
I am trying to enroll finger print with duplicate check using NServer.
I am using java samples provided in SDK.

Enrollment on Nserver is working if ENROLL WITH DUPLICATE CHECK flag is false. But if i try to enroll with ENROLL WITH DUPLICATE CHECK flag true; enrollment is failing with error "Invalid operations".

Complete java stack strace is as follows :

Code: Select all
 java.lang.RuntimeException: One or more errors occurred
   at com.neurotec.lang.NResult.checkAll(NResult.java:323)
   at com.neurotec.lang.NResult.raiseError(NResult.java:333)
   at com.neurotec.lang.NResult.check(NResult.java:234)
   at com.neurotec.biometrics.NBiometricEngine.enroll(NBiometricEngine.java:265)
   at com.neurotec.tutorials.biometrics.EnrollToSQLiteDatabase.main(EnrollToSQLiteDatabase.java:80)
Caused by: com.neurotec.util.concurrent.NAggregateExecutionException: One or more errors occurred
   at com.neurotec.util.concurrent.ConcurrentUtilErrorCreator.create(ConcurrentUtilErrorCreator.java:17)
   at com.neurotec.lang.ChainedErrorCreator.create(ChainedErrorCreator.java:22)
   at com.neurotec.lang.NError.get(NError.java:174)
   at com.neurotec.lang.NError.get(NError.java:191)
   at com.neurotec.lang.NError.getLast(NError.java:205)
   at com.neurotec.lang.NResult.checkUnchecked(NResult.java:245)
   ... 4 more
Caused by: com.neurotec.lang.NIllegalArgumentException: Invalid operations
   at com.neurotec.lang.RuntimeErrorCreator.create(RuntimeErrorCreator.java:22)
   at com.neurotec.lang.ChainedErrorCreator.create(ChainedErrorCreator.java:22)
   at com.neurotec.lang.NError.get(NError.java:174)
   at com.neurotec.lang.NError.get(NError.java:168)
   ... 7 more
 


Please let me know that ENROLL WITH DUPLICATE CHECK option is supported with NServer or not.

Thanks
Sumit

Hello,

NServer/NClusterServer/MegaMatcher Accelerator does not support "Enroll with duplicate check" functionality. You need to make identification first of all and if no matches are found enroll a new record.

Re: ENROLL WITH DUPLICATE CHECK

PostPosted: Jan 09, 2015 04:42
by sumit
Martynas wrote:Hello,

NServer/NClusterServer/MegaMatcher Accelerator does not support "Enroll with duplicate check" functionality. You need to make identification first of all and if no matches are found enroll a new record.

Hi Martynas,
Thanks for the quick reply.
We will proceed as you suggested; Identification first.

Thanks
Sumit

Re: Fingerprint enrollment questions

PostPosted: Jan 26, 2015 12:14
by ayushau
Hi,

I would like to know how to convert neurotech proprietary fingerprint template (NBuffer) to ISO template that can be used by another vendor.

Re: Fingerprint enrollment questions

PostPosted: Jan 27, 2015 08:36
by Martynas
ayushau wrote:Hi,

I would like to know how to convert neurotech proprietary fingerprint template (NBuffer) to ISO template that can be used by another vendor.

Hello,

please check tutorial NTemplateToFMRecord included in SDKs "tutorials" folder.

Re: Minutiae Verifinger 4.2 in Megamatcher 3.1

PostPosted: Feb 16, 2015 15:08
by tekofer
Hi good morning,

Martynas, from the attached image I generate the minutiae of VF4.2 but using MM3.1?
Or starting a .jpg image I can generate the minutiae of VF4.2 but using MM3.1?

thx

Re: Minutiae Verifinger 4.2 in Megamatcher 3.1

PostPosted: Feb 17, 2015 08:31
by Martynas
tekofer wrote:Hi good morning,

Martynas, from the attached image I generate the minutiae of VF4.2 but using MM3.1?
Or starting a .jpg image I can generate the minutiae of VF4.2 but using MM3.1?

thx

Hello,

yes, it is possible to generate VF4.2 template by using MM3.1. You need to use NFRecord.SaveV1() if you are using a .Net.

NFingerView and multiple finger enrollment

PostPosted: Apr 14, 2015 21:35
by efinlaw
I am developing a simple authentication system using the Verifinger SDK. Currently, I am using the C# SimpleFingersSample as a reference. More specifically, the EnrollFromScanner code. I am trying to figure out how the finger view functionality works, as well as creating a multiple finger template using the existing code given. Below is the code given to begin the task of capturing one finger with the live view enabled.

Code: Select all
private void ScanButtonClick(object sender, EventArgs e)
      {
         if (_biometricClient.FingerScanner == null)
         {
            MessageBox.Show(@"Please select a scanner from the list.");
         }
         else
         {
            EnableControls(true);
            lblQuality.Text = String.Empty;

            // Create a finger
            _subjectFinger = new NFinger();

            // Set Manual capturing mode if not automatic selected
            if (!chbScanAutomatically.Checked)
            {
               _subjectFinger.CaptureOptions = NBiometricCaptureOptions.Manual;
                   
            }

            // Add finger to the subject and fingerView
            _subject = new NSubject();
            _subject.Fingers.Add(_subjectFinger);
            _subjectFinger.PropertyChanged += OnAttributesPropertyChanged;
            fingerView.Finger = _subjectFinger;
            fingerView.ShownImage = ShownImage.Original;
               

            // Begin capturing
            _biometricClient.FingersReturnProcessedImage = true;
            NBiometricTask task = _biometricClient.CreateTask(NBiometricOperations.Capture | NBiometricOperations.CreateTemplate, _subject);
            _biometricClient.BeginPerformTask(task, OnEnrollCompleted, null);
            }
      }


And here is what I have so far. It captures multiple fingers but I"m confused on how to redraw fingerView after each finger is captured. Also, I"m very unfamiliar with this SDK so bare with me please. I"m pretty sure this isn"t even the correct method to handle this operation, so I guess what my real problem is that I don"t know where the capture task is even happening. Any help is appreciated.
*Note* volleyNumber is an integer that is incremented each time the force capture is called.
Code: Select all
private void ScanButtonClick(object sender, EventArgs e)
        {
            if (_biometricClient.FingerScanner == null)
            {
                MessageBox.Show(@"Scanner not connected");
            }
            else
            {
                EnableControls(true);
                //lblQuality.Text = String.Empty;

                // Create fingers
                LeftThumb = new NFinger();
                RightThumb = new NFinger();
                LeftIndex = new NFinger();
                RightIndex = new NFinger();
                // Set Manual capturing mode
                LeftThumb.CaptureOptions = NBiometricCaptureOptions.Manual;
                RightThumb.CaptureOptions = NBiometricCaptureOptions.Manual;
                LeftIndex.CaptureOptions = NBiometricCaptureOptions.Manual;
                RightIndex.CaptureOptions = NBiometricCaptureOptions.Manual;
               
                // Add fingers to the subject and fingerView
                _subject = new NSubject();
                _subject.Fingers.Add(LeftThumb);
                _subject.Fingers.Add(RightThumb);
                _subject.Fingers.Add(LeftIndex);
                _subject.Fingers.Add(RightIndex);
                //_subjectFinger.PropertyChanged += OnAttributesPropertyChanged;
                if (volleyNumber == 0)
                {
                    fingerView.Finger = LeftThumb;
                    fingerView.ShownImage = ShownImage.Original;
                }
                else if (volleyNumber == 1)
                {
                    fingerView.Refresh();
                    fingerView.Finger = RightThumb;
                    fingerView.ShownImage = ShownImage.Original;
                }
                else if (volleyNumber == 2)
                {
                    fingerView.Refresh();
                    fingerView.Finger = LeftIndex;
                    fingerView.ShownImage = ShownImage.Original;
                }
                else if (volleyNumber == 3)
                {
                    fingerView.Refresh();
                    fingerView.Finger = RightIndex;
                    fingerView.ShownImage = ShownImage.Original;
                }
           
                // Begin capturing
                //_biometricClient.FingersReturnProcessedImage = true;
                NBiometricTask task = _biometricClient.CreateTask(NBiometricOperations.Capture | NBiometricOperations.CreateTemplate, _subject);
                _biometricClient.BeginPerformTask(task, OnEnrollCompleted, null);
            }
        }

Admin: merged to "Fingerprint enrollment questions"

Re: NFingerView and multiple finger enrollment

PostPosted: Apr 15, 2015 11:48
by Martynas
efinlaw wrote:I am developing a simple authentication system using the Verifinger SDK. Currently, I am using the C# SimpleFingersSample as a reference. More specifically, the EnrollFromScanner code. I am trying to figure out how the finger view functionality works, as well as creating a multiple finger template using the existing code given. Below is the code given to begin the task of capturing one finger with the live view enabled.

Code: Select all
private void ScanButtonClick(object sender, EventArgs e)
      {
         if (_biometricClient.FingerScanner == null)
         {
            MessageBox.Show(@"Please select a scanner from the list.");
         }
         else
         {
            EnableControls(true);
            lblQuality.Text = String.Empty;

            // Create a finger
            _subjectFinger = new NFinger();

            // Set Manual capturing mode if not automatic selected
            if (!chbScanAutomatically.Checked)
            {
               _subjectFinger.CaptureOptions = NBiometricCaptureOptions.Manual;
                   
            }

            // Add finger to the subject and fingerView
            _subject = new NSubject();
            _subject.Fingers.Add(_subjectFinger);
            _subjectFinger.PropertyChanged += OnAttributesPropertyChanged;
            fingerView.Finger = _subjectFinger;
            fingerView.ShownImage = ShownImage.Original;
               

            // Begin capturing
            _biometricClient.FingersReturnProcessedImage = true;
            NBiometricTask task = _biometricClient.CreateTask(NBiometricOperations.Capture | NBiometricOperations.CreateTemplate, _subject);
            _biometricClient.BeginPerformTask(task, OnEnrollCompleted, null);
            }
      }


And here is what I have so far. It captures multiple fingers but I"m confused on how to redraw fingerView after each finger is captured. Also, I"m very unfamiliar with this SDK so bare with me please. I"m pretty sure this isn"t even the correct method to handle this operation, so I guess what my real problem is that I don"t know where the capture task is even happening. Any help is appreciated.
*Note* volleyNumber is an integer that is incremented each time the force capture is called.
Code: Select all
private void ScanButtonClick(object sender, EventArgs e)
        {
            if (_biometricClient.FingerScanner == null)
            {
                MessageBox.Show(@"Scanner not connected");
            }
            else
            {
                EnableControls(true);
                //lblQuality.Text = String.Empty;

                // Create fingers
                LeftThumb = new NFinger();
                RightThumb = new NFinger();
                LeftIndex = new NFinger();
                RightIndex = new NFinger();
                // Set Manual capturing mode
                LeftThumb.CaptureOptions = NBiometricCaptureOptions.Manual;
                RightThumb.CaptureOptions = NBiometricCaptureOptions.Manual;
                LeftIndex.CaptureOptions = NBiometricCaptureOptions.Manual;
                RightIndex.CaptureOptions = NBiometricCaptureOptions.Manual;
               
                // Add fingers to the subject and fingerView
                _subject = new NSubject();
                _subject.Fingers.Add(LeftThumb);
                _subject.Fingers.Add(RightThumb);
                _subject.Fingers.Add(LeftIndex);
                _subject.Fingers.Add(RightIndex);
                //_subjectFinger.PropertyChanged += OnAttributesPropertyChanged;
                if (volleyNumber == 0)
                {
                    fingerView.Finger = LeftThumb;
                    fingerView.ShownImage = ShownImage.Original;
                }
                else if (volleyNumber == 1)
                {
                    fingerView.Refresh();
                    fingerView.Finger = RightThumb;
                    fingerView.ShownImage = ShownImage.Original;
                }
                else if (volleyNumber == 2)
                {
                    fingerView.Refresh();
                    fingerView.Finger = LeftIndex;
                    fingerView.ShownImage = ShownImage.Original;
                }
                else if (volleyNumber == 3)
                {
                    fingerView.Refresh();
                    fingerView.Finger = RightIndex;
                    fingerView.ShownImage = ShownImage.Original;
                }
           
                // Begin capturing
                //_biometricClient.FingersReturnProcessedImage = true;
                NBiometricTask task = _biometricClient.CreateTask(NBiometricOperations.Capture | NBiometricOperations.CreateTemplate, _subject);
                _biometricClient.BeginPerformTask(task, OnEnrollCompleted, null);
            }
        }

Hello,

the basic idea is to change the NFinger in NFingerView after some finger is shown. It can be achieved by using the CurrentBiometricCompleted event. it is fired when NFinger scanning is finished. Below you will find the edited EnrollFromScanner code of the SimpleFingerSample, which shows how to achieve this.

Code: Select all
using System;
using System.ComponentModel;
using System.IO;
using System.Windows.Forms;
using Neurotec.Biometrics;
using Neurotec.Biometrics.Client;
using Neurotec.Biometrics.Gui;
using Neurotec.Devices;
using Neurotec.Images;

namespace Neurotec.Samples
{
   public partial class EnrollFromScanner : UserControl
   {
      #region Public constructor

      public EnrollFromScanner()
      {
         InitializeComponent();
      }

      #endregion

      #region Private fields

      private NDeviceManager _deviceManager;
      private NBiometricClient _biometricClient;
      private NSubject _subject;
      private NFinger[] _subjectFinger;
      //private NFinger _subjectFinger2;
      //private NFinger _subjectFinger3;
      //private NFinger _subjectFinger4;
      private int _fingerInUse = 0;

      #endregion

      #region Public properties

      public NBiometricClient BiometricClient
      {
         get { return _biometricClient; }
         set { _biometricClient = value; }
      }

      #endregion

      #region Private methods

      private void EnableControls(bool capturing)
      {
         scannersListBox.Enabled = !capturing;
         cancelScanningButton.Enabled = capturing;
         scanButton.Enabled = !capturing;
         refreshListButton.Enabled = !capturing;
         var fingerStatus = !capturing && _subjectFinger != null && _subjectFinger[_fingerInUse].Status == NBiometricStatus.Ok;
         saveImageButton.Enabled = fingerStatus;
         chbShowProcessedImage.Enabled = fingerStatus;
         saveTemplateButton.Enabled = !capturing && _subject != null && _subject.Status == NBiometricStatus.Ok;
         chbScanAutomatically.Enabled = !capturing;
         forceCaptureButton.Enabled = capturing && !chbScanAutomatically.Checked;
      }

      private void OnEnrollCompleted(IAsyncResult r)
      {
         if (InvokeRequired)
         {
            BeginInvoke(new AsyncCallback(OnEnrollCompleted), r);
         }
         else
         {
            NBiometricTask task = _biometricClient.EndPerformTask(r);
            EnableControls(false);
            NBiometricStatus status = task.Status;

            // Check if extraction was canceled
            if (status == NBiometricStatus.Canceled) return;

            if (status == NBiometricStatus.Ok)
            {
               lblQuality.Text = String.Format("Quality: {0}", _subjectFinger[_fingerInUse].Objects[0].Quality);
            }
            else
            {
               MessageBox.Show(string.Format("The template was not extracted: {0}.", status), Text, MessageBoxButtons.OK, MessageBoxIcon.Error);
               _subject = null;
               _subjectFinger = null;
               EnableControls(false);
            }
         }
      }

      private void UpdateScannerList()
      {
         scannersListBox.BeginUpdate();
         try
         {
            scannersListBox.Items.Clear();
            if (_deviceManager != null)
            {
               foreach (NDevice item in _deviceManager.Devices)
               {
                  scannersListBox.Items.Add(item);
               }
            }
         }
         finally
         {
            scannersListBox.EndUpdate();
         }
      }

      #endregion

      #region Private form events

      private void ScanButtonClick(object sender, EventArgs e)
      {
         if (_biometricClient.FingerScanner == null)
         {
            MessageBox.Show(@"Please select a scanner from the list.");
         }
         else
         {
            EnableControls(true);
            lblQuality.Text = String.Empty;

            // Create a finger
            _subjectFinger = new NFinger[4];
            for(int i = 0; i < 4; i++)
            {
               _subjectFinger[i] = new NFinger();
               _subjectFinger[i].PropertyChanged += OnAttributesPropertyChanged;
            }

            // Add finger to the subject and fingerView
            _subject = new NSubject();
            foreach (var f in _subjectFinger)
            {
               _subject.Fingers.Add(f);
            }

            fingerView.Finger = _subjectFinger[0];
            fingerView.ShownImage = ShownImage.Original;

            if (_fingerInUse == 0)
            {
               _biometricClient.CurrentBiometricCompleted += _biometricClient_CurrentBiometricCompleted;
            }
            else
            {
               _fingerInUse = 0;
            }
            // Begin capturing
            _biometricClient.FingersReturnProcessedImage = true;
            NBiometricTask task = _biometricClient.CreateTask(NBiometricOperations.Capture | NBiometricOperations.CreateTemplate, _subject);
            _biometricClient.BeginPerformTask(task, OnEnrollCompleted, null);
            
         }
      }

      private void _biometricClient_CurrentBiometricCompleted(object sender, EventArgs e)
      {
         BeginInvoke(new Action(() =>
         {
            if (_fingerInUse < _subjectFinger.Length - 1)
            {
               _fingerInUse++;
            }
            fingerView.Finger = _subjectFinger[_fingerInUse];
         }));
      }

      private void OnAttributesPropertyChanged(object sender, PropertyChangedEventArgs e)
      {
         if (e.PropertyName == "Status")
         {
            BeginInvoke(new Action<NBiometricStatus>(status => lblQuality.Text = status.ToString()), _subjectFinger[_fingerInUse].Status);
         }
      }

      private void CancelScanningButtonClick(object sender, EventArgs e)
      {
         _biometricClient.Cancel();
      }

      private void RefreshListButtonClick(object sender, EventArgs e)
      {
         UpdateScannerList();
      }

      private void SaveImageButtonClick(object sender, EventArgs e)
      {
         if (_subjectFinger[_fingerInUse].Status == NBiometricStatus.Ok)
         {
            saveFileDialog.FileName = string.Empty;
            saveFileDialog.Title = @"Save Image File";
            saveFileDialog.Filter = NImages.GetSaveFileFilterString();
            if (saveFileDialog.ShowDialog() == DialogResult.OK)
            {
               try
               {
                  if (chbShowProcessedImage.Checked)
                  {
                     _subjectFinger[_fingerInUse].ProcessedImage.Save(saveFileDialog.FileName);
                  }
                  else
                  {
                     _subjectFinger[_fingerInUse].Image.Save(saveFileDialog.FileName);
                  }
               }
               catch (Exception ex)
               {
                  Utils.ShowException(ex);
               }
            }
         }
      }

      private void SaveTemplateButtonClick(object sender, EventArgs e)
      {
         if (_subject.Status == NBiometricStatus.Ok)
         {
            saveFileDialog.FileName = string.Empty;
            saveFileDialog.Filter = string.Empty;
            saveFileDialog.Title = @"Save Template File";
            if (saveFileDialog.ShowDialog() == DialogResult.OK)
            {
               try
               {
                  // Save template to file
                  File.WriteAllBytes(saveFileDialog.FileName, _subject.GetTemplateBuffer().ToArray());
               }
               catch (Exception ex)
               {
                  Utils.ShowException(ex);
               }
            }
         }
      }

      private void EnrollFromScannerLoad(object sender, EventArgs e)
      {
         _deviceManager = _biometricClient.DeviceManager;
         UpdateScannerList();
         saveFileDialog.Filter = NImages.GetSaveFileFilterString();
      }

      private void ScannersListBoxSelectedIndexChanged(object sender, EventArgs e)
      {
         _biometricClient.FingerScanner = scannersListBox.SelectedItem as NFScanner;
      }

      private void ChbShowProcessedImageCheckedChanged(object sender, EventArgs e)
      {
         fingerView.ShownImage = chbShowProcessedImage.Checked ? ShownImage.Result : ShownImage.Original;
      }

      private void FingerViewMouseClick(object sender, MouseEventArgs e)
      {
         if (e.Button == MouseButtons.Right && chbShowProcessedImage.Enabled)
         {
            chbShowProcessedImage.Checked = !chbShowProcessedImage.Checked;
         }
      }

      private void ForceCaptureButtonClick(object sender, EventArgs e)
      {
         _biometricClient.Force();
      }

      #endregion

   }
}



Re: NFingerView and multiple finger enrollment

PostPosted: Apr 16, 2015 15:12
by efinlaw
Martynas wrote:Hello,

the basic idea is to change the NFinger in NFingerView after some finger is shown. It can be achieved by using the CurrentBiometricCompleted event. it is fired when NFinger scanning is finished. Below you will find the edited EnrollFromScanner code of the SimpleFingerSample, which shows how to achieve this.

Code: Select all
using System;
using System.ComponentModel;
using System.IO;
using System.Windows.Forms;
using Neurotec.Biometrics;
using Neurotec.Biometrics.Client;
using Neurotec.Biometrics.Gui;
using Neurotec.Devices;
using Neurotec.Images;

namespace Neurotec.Samples
{
   public partial class EnrollFromScanner : UserControl
   {
      #region Public constructor

      public EnrollFromScanner()
      {
         InitializeComponent();
      }

      #endregion

      #region Private fields

      private NDeviceManager _deviceManager;
      private NBiometricClient _biometricClient;
      private NSubject _subject;
      private NFinger[] _subjectFinger;
      //private NFinger _subjectFinger2;
      //private NFinger _subjectFinger3;
      //private NFinger _subjectFinger4;
      private int _fingerInUse = 0;

      #endregion

      #region Public properties

      public NBiometricClient BiometricClient
      {
         get { return _biometricClient; }
         set { _biometricClient = value; }
      }

      #endregion

      #region Private methods

      private void EnableControls(bool capturing)
      {
         scannersListBox.Enabled = !capturing;
         cancelScanningButton.Enabled = capturing;
         scanButton.Enabled = !capturing;
         refreshListButton.Enabled = !capturing;
         var fingerStatus = !capturing && _subjectFinger != null && _subjectFinger[_fingerInUse].Status == NBiometricStatus.Ok;
         saveImageButton.Enabled = fingerStatus;
         chbShowProcessedImage.Enabled = fingerStatus;
         saveTemplateButton.Enabled = !capturing && _subject != null && _subject.Status == NBiometricStatus.Ok;
         chbScanAutomatically.Enabled = !capturing;
         forceCaptureButton.Enabled = capturing && !chbScanAutomatically.Checked;
      }

      private void OnEnrollCompleted(IAsyncResult r)
      {
         if (InvokeRequired)
         {
            BeginInvoke(new AsyncCallback(OnEnrollCompleted), r);
         }
         else
         {
            NBiometricTask task = _biometricClient.EndPerformTask(r);
            EnableControls(false);
            NBiometricStatus status = task.Status;

            // Check if extraction was canceled
            if (status == NBiometricStatus.Canceled) return;

            if (status == NBiometricStatus.Ok)
            {
               lblQuality.Text = String.Format("Quality: {0}", _subjectFinger[_fingerInUse].Objects[0].Quality);
            }
            else
            {
               MessageBox.Show(string.Format("The template was not extracted: {0}.", status), Text, MessageBoxButtons.OK, MessageBoxIcon.Error);
               _subject = null;
               _subjectFinger = null;
               EnableControls(false);
            }
         }
      }

      private void UpdateScannerList()
      {
         scannersListBox.BeginUpdate();
         try
         {
            scannersListBox.Items.Clear();
            if (_deviceManager != null)
            {
               foreach (NDevice item in _deviceManager.Devices)
               {
                  scannersListBox.Items.Add(item);
               }
            }
         }
         finally
         {
            scannersListBox.EndUpdate();
         }
      }

      #endregion

      #region Private form events

      private void ScanButtonClick(object sender, EventArgs e)
      {
         if (_biometricClient.FingerScanner == null)
         {
            MessageBox.Show(@"Please select a scanner from the list.");
         }
         else
         {
            EnableControls(true);
            lblQuality.Text = String.Empty;

            // Create a finger
            _subjectFinger = new NFinger[4];
            for(int i = 0; i < 4; i++)
            {
               _subjectFinger[i] = new NFinger();
               _subjectFinger[i].PropertyChanged += OnAttributesPropertyChanged;
            }

            // Add finger to the subject and fingerView
            _subject = new NSubject();
            foreach (var f in _subjectFinger)
            {
               _subject.Fingers.Add(f);
            }

            fingerView.Finger = _subjectFinger[0];
            fingerView.ShownImage = ShownImage.Original;

            if (_fingerInUse == 0)
            {
               _biometricClient.CurrentBiometricCompleted += _biometricClient_CurrentBiometricCompleted;
            }
            else
            {
               _fingerInUse = 0;
            }
            // Begin capturing
            _biometricClient.FingersReturnProcessedImage = true;
            NBiometricTask task = _biometricClient.CreateTask(NBiometricOperations.Capture | NBiometricOperations.CreateTemplate, _subject);
            _biometricClient.BeginPerformTask(task, OnEnrollCompleted, null);
            
         }
      }

      private void _biometricClient_CurrentBiometricCompleted(object sender, EventArgs e)
      {
         BeginInvoke(new Action(() =>
         {
            if (_fingerInUse < _subjectFinger.Length - 1)
            {
               _fingerInUse++;
            }
            fingerView.Finger = _subjectFinger[_fingerInUse];
         }));
      }

      private void OnAttributesPropertyChanged(object sender, PropertyChangedEventArgs e)
      {
         if (e.PropertyName == "Status")
         {
            BeginInvoke(new Action<NBiometricStatus>(status => lblQuality.Text = status.ToString()), _subjectFinger[_fingerInUse].Status);
         }
      }

      private void CancelScanningButtonClick(object sender, EventArgs e)
      {
         _biometricClient.Cancel();
      }

      private void RefreshListButtonClick(object sender, EventArgs e)
      {
         UpdateScannerList();
      }

      private void SaveImageButtonClick(object sender, EventArgs e)
      {
         if (_subjectFinger[_fingerInUse].Status == NBiometricStatus.Ok)
         {
            saveFileDialog.FileName = string.Empty;
            saveFileDialog.Title = @"Save Image File";
            saveFileDialog.Filter = NImages.GetSaveFileFilterString();
            if (saveFileDialog.ShowDialog() == DialogResult.OK)
            {
               try
               {
                  if (chbShowProcessedImage.Checked)
                  {
                     _subjectFinger[_fingerInUse].ProcessedImage.Save(saveFileDialog.FileName);
                  }
                  else
                  {
                     _subjectFinger[_fingerInUse].Image.Save(saveFileDialog.FileName);
                  }
               }
               catch (Exception ex)
               {
                  Utils.ShowException(ex);
               }
            }
         }
      }

      private void SaveTemplateButtonClick(object sender, EventArgs e)
      {
         if (_subject.Status == NBiometricStatus.Ok)
         {
            saveFileDialog.FileName = string.Empty;
            saveFileDialog.Filter = string.Empty;
            saveFileDialog.Title = @"Save Template File";
            if (saveFileDialog.ShowDialog() == DialogResult.OK)
            {
               try
               {
                  // Save template to file
                  File.WriteAllBytes(saveFileDialog.FileName, _subject.GetTemplateBuffer().ToArray());
               }
               catch (Exception ex)
               {
                  Utils.ShowException(ex);
               }
            }
         }
      }

      private void EnrollFromScannerLoad(object sender, EventArgs e)
      {
         _deviceManager = _biometricClient.DeviceManager;
         UpdateScannerList();
         saveFileDialog.Filter = NImages.GetSaveFileFilterString();
      }

      private void ScannersListBoxSelectedIndexChanged(object sender, EventArgs e)
      {
         _biometricClient.FingerScanner = scannersListBox.SelectedItem as NFScanner;
      }

      private void ChbShowProcessedImageCheckedChanged(object sender, EventArgs e)
      {
         fingerView.ShownImage = chbShowProcessedImage.Checked ? ShownImage.Result : ShownImage.Original;
      }

      private void FingerViewMouseClick(object sender, MouseEventArgs e)
      {
         if (e.Button == MouseButtons.Right && chbShowProcessedImage.Enabled)
         {
            chbShowProcessedImage.Checked = !chbShowProcessedImage.Checked;
         }
      }

      private void ForceCaptureButtonClick(object sender, EventArgs e)
      {
         _biometricClient.Force();
      }

      #endregion

   }
}



Ok thank you very helpful. I have one more question. Say I wanted to recapture one or more of the fingers at the end of the capture task if the quality was not good enough. Is there any way to go back in the task after it has ended?

Re: NFingerView and multiple finger enrollment

PostPosted: Apr 22, 2015 07:59
by Martynas
efinlaw wrote:Ok thank you very helpful. I have one more question. Say I wanted to recapture one or more of the fingers at the end of the capture task if the quality was not good enough. Is there any way to go back in the task after it has ended?

Hello,

it is not possible to get back in the task as it is ended, but you can remove the NFinger with bad quality from NSubject, then add a newly created one and Capture and Create Template again.

Re: Generic Component

PostPosted: Apr 26, 2015 07:06
by Yashir_Bajwa
hi everyone....

I want to get Minutiae points from an image of fingerprints.. I convert image into grayscale and then find its edges through cany edge detector but now i don"t know how to find minutiae points from edges.... kindly help me through c# code or tell me any liberary class or some kind of api"s which i can use for this purpose....

Minutiae points

PostPosted: Apr 27, 2015 05:44
by Yashir_Bajwa
Hi... Kindly tell me any liberary class or api which i can use to find minutiae points in c#.. or help me through c# sample code to find minutiae points... I already found edges of an image of fingerprints but i don"t know how to get minutiae points...??

Admin: merged to "Fingerprint enrollment questions"

Re: Fingerprint enrollment questions

PostPosted: Apr 27, 2015 07:20
by Martynas
Yashir_Bajwa wrote:hi everyone....

I want to get Minutiae points from an image of fingerprints.. I convert image into grayscale and then find its edges through cany edge detector but now i don"t know how to find minutiae points from edges.... kindly help me through c# code or tell me any liberary class or some kind of api"s which i can use for this purpose....

Hello,

minutiae could be extracted by using the VeriFinger or MegaMatcher SDKs. Both SDKs include tutorials and samples showing how to do that.

Re: Minutiae points

PostPosted: Apr 30, 2015 12:53
by Martynas
Yashir_Bajwa wrote:Hi... Kindly tell me any liberary class or api which i can use to find minutiae points in c#.. or help me through c# sample code to find minutiae points... I already found edges of an image of fingerprints but i don"t know how to get minutiae points...??

Hello,

the tutorial EnrollFingerFromImage shows how to extract the template from fingerprint image. The tutorial ShowTemplateContent show to get the list of minutiae from the template.

Extraction of minutiae that is compatible with MegaMatcher 3

PostPosted: May 22, 2015 23:00
by tekofer
As is generated from C # MegaMatcher 3 template VFinger equal to 4.2?

Admin: merged to "Fingerprint enrollment questions"

Re: Extraction of minutiae that is compatible with MegaMatch

PostPosted: May 25, 2015 07:39
by Martynas
tekofer wrote:As is generated from C # MegaMatcher 3 template VFinger equal to 4.2?

Hello,

please clarify you issue/request.

Re: Extraction of minutiae that is compatible with MegaMatch

PostPosted: Jun 04, 2015 17:32
by tekofer
Martynas wrote:Hello,

please clarify you issue/request.

I can generate from MegaMatcher 3.2 or 3 employs Vfinger4.2

Re: Extraction of minutiae that is compatible with MegaMatch

PostPosted: Jun 05, 2015 07:16
by Martynas
tekofer wrote:I can generate from MegaMatcher 3.2 or 3 employs Vfinger4.2

Hi,

yes, it is possible to generate VF4.2 template by using MM3.1. You need to use NFRecord.SaveV1() if you are using a .Net.

Re: Extraction of minutiae that is compatible with MegaMatch

PostPosted: Jun 16, 2015 15:06
by tekofer
Martynas wrote:Hi,

yes, it is possible to generate VF4.2 template by using MM3.1. You need to use NFRecord.SaveV1() if you are using a .Net.

thanks

Verifinger minutia extraction

PostPosted: Jun 25, 2015 14:37
by gg924
Hello all,

Currently I am doing bit extraction from fingerprint minutiae. I wish using veriFinger 6.1 SDK trial verison to extract the minutiae in x, y and theta format. Anyone can provide sample code in C# for extracting the minutia and export into text file? thanks in advance!

best regards

Admin: merged to "Fingerprint enrollment questions"

Re: Verifinger minutia extraction

PostPosted: Jun 26, 2015 10:02
by Martynas
gg924 wrote:Hello all,

Currently I am doing bit extraction from fingerprint minutiae. I wish using veriFinger 6.1 SDK trial verison to extract the minutiae in x, y and theta format. Anyone can provide sample code in C# for extracting the minutia and export into text file? thanks in advance!

best regards

Hello,

please take a look at tutorials "EnrollFingerFromImage" or "EnrollFingerFromScanner" to find how the template is extracted from fingerprint image. Then use the tutorial "TemplateInfo", to see how to get the information about extracted minutiaes.

Fingers classifier file is missing

PostPosted: Jul 06, 2015 13:18
by neal
Hi I use c# with the sdk,
And When I run the code to extract the template I get a status error "Fingers classifier file is missing".
Is it a librarie that is missing?

Admin: merged to "Fingerprint enrollment questions"

Error on extracting template from Fingerprint

PostPosted: Jul 06, 2015 14:09
by neal
Hi When I try to extract the template I get the following error from c#.

"Fingers classifier file is missing"

Re: Error on extracting template from Fingerprint

PostPosted: Jul 09, 2015 06:55
by Martynas
neal wrote:Hi I use c# with the sdk,
And When I run the code to extract the template I get a status error "Fingers classifier file is missing".
Is it a librarie that is missing?

neal wrote:Hi When I try to extract the template I get the following error from c#.

"Fingers classifier file is missing"

Hello,

please copy Finger.ndf file from the SDK "Bin\Data" folder to your application output folder.

Re: Fingerprint enrollment questions

PostPosted: Jul 16, 2015 16:21
by Jiward
Hi dear Martynas,
how to EnrollWithDuplicateCheck multiple fingerprints of the same person
Thanks

Re: Fingerprint enrollment questions

PostPosted: Jul 17, 2015 07:10
by Martynas
Jiward wrote:Hi dear Martynas,
how to EnrollWithDuplicateCheck multiple fingerprints of the same person
Thanks

Hi,

create a multifinger template and use it from enrollment with duplicate check.

extract minutiae features

PostPosted: Aug 08, 2015 14:48
by nora
hello,
I tried the tutorial "Show TemplateContentCS" to extract the information about minutiae ( x, y and theta format) but i couldn"t.
Any idea about how to get the minutiae information from finger template? (I am using SDK 5-1 trial version.)

Best regards,

Admin: merged to "Fingerprint enrollment questions"