Может ли Java API верификации в Digital Persona One Touch работать без RTE? - PullRequest
0 голосов
/ 04 октября 2011

Требует ли этот код для работы RTE (среды выполнения) Digital Persona One Touch?:

DPFPVerification verifier  = DPFPGlobal.getVerificationFactory().createVerification();

Если да, есть ли другой способ проверки SampleFeatures Digital Persona (сериализованный) по шаблону Digital Persona(сериализовано) с использованием только JAR-файлов dpfp?

Причина: мы планируем иметь наш верификатор DPFP в веб-службе, предоставляемой TIBCO.

Любая помощь очень ценится!Я получаю исключение JNI для Java с этим основным тестовым кодом:

import com.digitalpersona.onetouch.DPFPFeatureSet;
import com.digitalpersona.onetouch.DPFPFeatureSetFactory;
import com.digitalpersona.onetouch.DPFPGlobal;
import com.digitalpersona.onetouch.DPFPTemplate;
import com.digitalpersona.onetouch.DPFPTemplateFactory;
import com.digitalpersona.onetouch.verification.DPFPVerification;
import com.digitalpersona.onetouch.verification.DPFPVerificationResult;


public class Main {

    /**
     * fingerScanTemplate is from WC DB
     * sample is from the WS input parameters
     */
    public boolean performVerification(byte[] fingerScanTemplate, byte[] sampleFeatures) {
            DPFPTemplateFactory templateFactory         = DPFPGlobal.getTemplateFactory();
            DPFPFeatureSetFactory featureSetFactory     = DPFPGlobal.getFeatureSetFactory();
            DPFPVerification      verifier                          = DPFPGlobal.getVerificationFactory().createVerification();

            // Deserialize template & sampleFeature
            DPFPTemplate deserializedTemplate = templateFactory.createTemplate(fingerScanTemplate);
            DPFPFeatureSet features = featureSetFactory.createFeatureSet(sampleFeatures);

            //Compare the feature set with the template, based on which finger was captured
            DPFPVerificationResult result = null;
            result = verifier.verify(features, deserializedTemplate);

            return result != null && result.isVerified();
         }



    /**
     * @param args
     */
    public static void main(String[] args) {
        new Main().performVerification(null, null);
    }

}

1 Ответ

1 голос
/ 01 мая 2012

Нет, вам не нужно какое-то RTE. Я знаю, что мне нужно было установить One Touch SDK, потому что он запускает службу Windows под названием Биометрическое сканирование или что-то подобное. Основная проблема, которую я вижу с вашим кодом, состоит в том, что:

DPFPVerificationResult result = null;

result = verifier.verify(features, deserializedTemplate);

Должно быть:

DPFP.Verification.Verification.Result result = new DPFP.Verification.Verification.Result();

verifier.verify(features, template, ref result );

По крайней мере, это то, что заставило мой код начать корректную проверку. Мне также пришлось исправить ошибку программиста при создании FeatureSet, которую нужно сделать следующим образом:

DPFP.FeatureSet features = ExtractFeatures(Sample, DPFP.Processing.DataPurpose.Verification);

У меня такое ощущение, что вы используете более старый SDK, чем я, но, возможно, это поможет вам.

...