前言:对于本次ArcSoft虹软人脸识别接入,仅作为学习交流,以下内容仅为记录验证过程。
前期准备:申请账号、创建应用,之后在虹软开发者中心即可看到SDK KEY、 APP ID 以及可以下载官方demo。
本次接入的是“人脸识别增强版”, Windows java版本 V4.1 。
SDK文档中心:https://ai.arcsoft.com.cn/manual/docs#/149#344_activeOffline_502
官方Demo:https://arcfacepackages.blob.core.chinacloudapi.cn/arcface-packages/sdk/arcface_pro/windowsx64/ArcSoft_ArcFacePro_windows_x64_java_V4.1.zip
一、搭建自己的微服务应用程序 ,该步骤不在此进行描述。
二、打开官网Demo,将libs 的jar包文件 引入自己的工程,如下图所示:
从File -> Project Structru 进入,并如下图操作引入
三、创建Controller 用于本次的验证,写如下激活方法,并调用激活,本次使用的是在线激活方式。
// 激活
private void jihuoSDK(){
String appId = "您的appid";
String sdkKey = "您的SDK key";
String activeKey = "您的激活码";
System.err.println("注意,如果返回的errorCode不为0,可查看com.arcsoft.face.enums.ErrorInfo类获取相应的错误信息");
//人脸识别引擎库存放路径
FaceEngine faceEngine = new FaceEngine("填写您 人脸识别引擎库存放路径,即WIN64文件夹所在路径 ");
//激活引擎
int errorCode = faceEngine.activeOnline(appId, sdkKey, activeKey);
System.out.println("引擎激活errorCode:" + errorCode);
ActiveDeviceInfo activeDeviceInfo = new ActiveDeviceInfo();
//采集设备信息(可离线) errorCode = faceEngine.getActiveDeviceInfo(activeDeviceInfo);
System.out.println("采集设备信息errorCode:" + errorCode); System.out.println("设备信息:" + activeDeviceInfo.getDeviceInfo());
// 离线激活
// faceEngine.activeOffline("d:\\ArcFacePro64.dat.offline");
ActiveFileInfo activeFileInfo = new ActiveFileInfo();
errorCode = faceEngine.getActiveFileInfo(activeFileInfo);
System.out.println("获取激活文件errorCode:" + errorCode);
System.out.println("激活文件信息:" + activeFileInfo.toString());
}
四、创建实例,以及对应的初始化方法 ,仅为后面逐个验证使用,这部分与官网Demo内容有所出入
private FaceEngine faceEngine; // 引擎
private FunctionConfiguration functionConfiguration; // 功能配置类
private EngineConfiguration engineConfiguration; //引擎配置类
//引擎配置
private void initEngineConfiguration(){
if(this.engineConfiguration == null){
System.out.println("需要初始化engineConfiguration");
this.engineConfiguration = new EngineConfiguration(); engineConfiguration.setDetectMode(DetectMode.ASF_DETECT_MODE_IMAGE); engineConfiguration.setDetectFaceOrientPriority(DetectOrient.ASF_OP_ALL_OUT); engineConfiguration.setDetectFaceMaxNum(10);
}else {
System.out.println("不需要初始化engineConfiguration"); }}
//功能配置(人物特征),由于使用到不同功能的功能配置不同,因此独立抽出一个方法
private void initFunctionConfiguration(){
if(this.functionConfiguration == null){
System.out.println("不需要初始化functionConfiguration");
this.functionConfiguration = new FunctionConfiguration();
functionConfiguration.setSupportAge(true);
functionConfiguration.setSupportFaceDetect(true);
functionConfiguration.setSupportFaceRecognition(true);
functionConfiguration.setSupportGender(true);
functionConfiguration.setSupportLiveness(true);
functionConfiguration.setSupportIRLiveness(true);
functionConfiguration.setSupportImageQuality(true);
functionConfiguration.setSupportMaskDetect(true);
functionConfiguration.setSupportUpdateFaceData(true);
engineConfiguration.setFunctionConfiguration(functionConfiguration);
}else{
System.out.println("不需要初始化functionConfiguration");
}
}
//初始化引擎
private void initFaceEngine(){
if(this.faceEngine == null){
System.out.println("需要初始化faceEngine");
this.faceEngine = new FaceEngine("引擎所在路径");
int errorCode = faceEngine.init(engineConfiguration);
System.out.println("初始化引擎errorCode:" + errorCode);
VersionInfo version = faceEngine.getVersion();
System.out.println(version);
}
else { System.out.println("不需要初始化faceEngine");
}
}
五、两张图片的人物相似度对比
六、人脸属性检测(年龄、性别、活体、口罩)
七、人脸注册
八、人员人脸识别(从注册的人物中识别出相似度最高)
九、查看注册人数
网友评论