虹软产品地址:http://ai.arcsoft.com.cn/product/arcface.html
虹软ArcFace功能简介
- 人脸检测
- 人脸跟踪
- 人脸属性检测(性别、年龄)
- 人脸三维角度检测
- 人脸对比
本文使用到的SDK为本人自己使用JNA做的封装,2.0的使用比1.x的版本使用更方便,api更集中更科学
在windows 64 系统下,通过jna调用虹软的API,一切正常。在centos下,ubuntu下测试,出现参数无效问题,测试代码如下
FaceEngine ins = FaceEngine.INSTANCE;
//SDK激活
ins.ASFActivation(Conf.appId, Conf.appKey);
PointerByReference phEngine = new PointerByReference();
//SDK初始化,需要设置模式是video,还是image,配置人脸检测的角度,engine需要支持的功能 mask,最大支持的人脸数量50,人脸大小16
int mask = FaceEngine.ASF_FACE_DETECT | FaceEngine.ASF_FACERECOGNITION | FaceEngine.ASF_AGE | FaceEngine.ASF_GENDER | FaceEngine.ASF_FACE3DANGLE;
NativeLong ret = ins.ASFInitEngine(FaceEngine.ASF_DETECT_MODE_IMAGE, OrientPriority.AFD_FSDK_OPF_0_ONLY, 16,10, mask, phEngine);
if (ret.longValue() != FaceEngine.MOK) {
System.out.println("ASFInitEngine ERROR:"+ret.longValue());
return;
}
初始化引擎的时候,会返回错误码“2”,如下图:
2222.jpg
后经过一个兄弟的友情帮助,问题总算解决,关于Mode的常量,定义的类型是long,可能是JNA的处理的问题,会把该long当做整形或长整型处理?不确定,但把该参数后面加上一个l,强制将该值定义为 long 类型,问题解决。
代码如下:
public static final long ASF_DETECT_MODE_IMAGE= 0xFFFFFFFFl;
//初始化接口定义
NativeLong ASFInitEngine(long detectMode, int detectFaceOrientPriority, int detectFaceScaleVal,int detectFaceMaxNum, int combinedMask,PointerByReference phEngine);
感谢提供解决方式的兄弟,qq好友 “ Ruby-周”
使用已经封装好的SDK进行人脸识别
https://www.jianshu.com/p/96636db03792
使用已经封装好的SDK进行人脸识别【人脸特征提取比对】
https://www.jianshu.com/p/ab64464571da
虹软ArcFace 2.0,java SDK使用、人脸信息识别(年龄、性别)
https://www.jianshu.com/p/cfe90f82be97
需要完整代码,加qq:79295735
网友评论