我正在尝试使用DigitalPersona SDK v 3.0.0比较Java中的两个指纹,但是我选择FMD是无效错误,或者有时我得到一个或多个传递给API调用的参数无效。

我有一个从Javascript API获取的png图像,我试图先创建一个FID,然后再创建一个FDM,如本文所述
example

但是我不知道如何获取方法参数:inDpi,fingerPosition,cbeffId,outDpi和rotate180以获取fid

Fid fid = UareUGlobal.getImporter()。ImportRaw(rawPixels,
宽度,高度,inDpi,fingerPosition,cbeffId,
Fid.Format.ANSI_381_2004,outDpi,rotate180);

我也尝试使用中间格式的ImportFmd失败

任何帮助将不胜感激

最佳答案

好吧,我目前也在研究那个。 UareU SDK V3.0.0,

但是我对“验证和比较”功能有疑问。

但是,要回答您的问题,如果您有指纹图像,
您可以将图像直接导入Fmd。我的意思是(我使用ISO标准):
Fmd fmd = UareUGlobal.GetEngine().CreateFmd(bInput, 500, 550, 700, 0, 0, Fmd.Format.ISO_19794_2_2005)
然后,您可以直接使用compare进行verifyfmd
注意:必须根据您的图像和阅读器更改高度,分辨率。cbeffid参数,我尝试了0和1。如果有人找到了该参数的正确答案,请也建议我。
CBEFF

错误



通常,我发现分辨率,指纹格式和手指位置参数正确。指纹参数,我通常设置为0(第一指或第一 View )

更新
如果您使用的是javascript。我建议您先将base64字符串从javascript转换为bufferedImage

    public static Fmd importImageString(String image) throws UnsupportedEncodingException, IOException, UareUException {
    byte[] bytes = Base64.getDecoder().decode(image.getBytes("UTF-8"));
    if (null != bytes && bytes.length > 0) {
        ByteArrayInputStream stream = new ByteArrayInputStream(bytes);
        BufferedImage buf = ImageIO.read(stream);
        if (null != buf) {
            return UareUGlobal.GetEngine().CreateFmd(
                    TestDPuareU.toBytes(buf),
                    buf.getWidth(),
                    buf.getHeight(),
                    500, 0, 1, Fmd.Format.ISO_19794_2_2005
            );
        }
    }
    return null;
}

public static byte[] toBytes(BufferedImage image) throws IOException {
    WritableRaster raster = image.getRaster();
    DataBufferByte data = (DataBufferByte) raster.getDataBuffer();

    return (data.getData());
}

我从javascript(image)var finger中获得的sdk.onSamplesAcquired = function (s)如下所示
var samples = JSON.parse(s.samples);
var finger = Fingerprint.b64UrlTo64(samples[0])

10-07 13:50