以下描述了如何使用灵云FPR能力。
1. FPR简介
FPR 指纹识别能力,对特定的指纹数据进行模型注册和训练后,支持对未知指纹数据的校验。
2. 选择模块和能力
灵云可以提供云端和本地端的指纹识别能力. 无论使用云端或本地端的指纹识别能力,基础模块 hci_fpr都是需要的。 使用云端能力时,需要加上hci_fpr_cloud_recog模块; 使用本地端能力时,需要加上hci_fpr_local_recog模块.
3. 指纹图像数据格式
指纹可以使用不同的文件格式进行存储,支持格式包括jpg, bmp, png等常见格式图像,目前仅支持位深为位灰度, 24位彩色的图像。这些图像格式具有文件头,标识了文件格式、图像的基本信息(例如宽、高、图像类型), 并且对图像数据进行了压缩。在使用时,开发者直接将这些格式的数据传给灵云FPR模块,灵云FPR模块会根据文件头自动判断文件格式, 并进行解压缩操作。 目前不支持多页TIFF类型的文件,多页TIFF只会处理第一页的内容。目前Android不支持GIF格式以及TIFF格式文件。 开发者也可以使用raw格式数据给FPR模块,此时需要指定图像的宽高等属性。
4. 指纹特征注册和训练
当调用hci_fpr_enroll接口进行注册时,用户唯一标识可以由服务端产生,也可以由用户自己指定,但必须要保证该标识的唯一性。 可以对该指纹模型进行多次注册用以完善模型。
示例代码如下:
string enrollConfig = "imageType=raw,bgColor=white,dpi=500";
{
printf("hci_fpr_enroll return %d\n",errCode);
return;
}
5. 指纹特征确认
指纹模型注册和训练成功后,可以对指纹数据进行校验,以判断用户唯一标识和指纹数据是否相符。
示例代码如下:
string verifyConfig = "userid=" + userID;
verifyConfig += ",imageType=raw,dpi=500,bgColor=white";
errCode =
hci_fpr_verify(nSessionId, FingerData.m_pBuf, FingerData.m_nLen, verifyConfig.c_str(), &pVerifyResult);
{
printf( "hci_fpr_verify return %d\n", errCode );
return;
}
printf( "hci_fpr_verify success\n" );
{
printf( "Finger data matches with user id:%s!\n",userID.c_str() );
}
else
{
printf("Finger data doesn't match with user id:%s!\n",userID.c_str());
}
{
printf( "hci_fpr_free_verify_result return %d\n", errCode );
return;
}
printf( "hci_fpr_free_verify_result success\n" );
6. 指纹特征辨识
指纹模型多次注册后,可对指纹数据进行校验,选出与用户唯一标识最相符的数据,并按得分排列。
示例代码如下:
string identifyConfig = "bgcolor=white,dpi=512";
identifyConfig += ",imagetype=format";
if (groupID!="")
{
identifyConfig += ",groupid=" +groupID;
}
printf("hci_fpr_identify config [%s]\n", identifyConfig.c_str());
err_code =
hci_fpr_identify(nSessionId, fingerData.buff_, fingerData.buff_len_, identifyConfig.c_str(), &identifyResult);
{
printf( "hci_fpr_identify succes\n");
PrintIdentifyResult(identifyResult);
}
else
{
}
{
}
printf( "hci_fpr_session_stop success\n" );