Может ли проверка Java API в Digital Persona One Touch выполняться без RTE?

#java #verification #fingerprint #biometrics

#java #проверка #отпечаток пальца #биометрия

Вопрос:

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

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

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

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

Любая помощь приветствуется!

Я получаю исключение Java JNI с этим образцом основного кода теста:

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


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 amp; 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 amp;amp; result.isVerified();
         }



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

}
  

Ответ №1:

Нет, вам не нужен какой-то 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 );
  

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

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

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