虹軟產(chǎn)品地址:http://ai.arcsoft.com.cn/product/arcface.html
虹軟ArcFace功能簡介
- 人臉檢測
- 人臉跟蹤
- 人臉屬性檢測(性別、年齡)
- 人臉三維角度檢測
- 人臉對比
本文使用到的SDK為本人自己使用JNA做的封裝,2.0的使用比1.x的版本使用更方便,api更集中更科學(xué)
在windows 64 系統(tǒng)下,通過jna調(diào)用虹軟的API,一切正常。在centos下,ubuntu下測試,出現(xiàn)參數(shù)無效問題,測試代碼如下
FaceEngine ins = FaceEngine.INSTANCE;
//SDK激活
ins.ASFActivation(Conf.appId, Conf.appKey);
PointerByReference phEngine = new PointerByReference();
//SDK初始化,需要設(shè)置模式是video,還是image,配置人臉檢測的角度,engine需要支持的功能 mask,最大支持的人臉數(shù)量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
后經(jīng)過一個兄弟的友情幫助,問題總算解決,關(guān)于Mode的常量,定義的類型是long,可能是JNA的處理的問題,會把該long當做整形或長整型處理?不確定,但把該參數(shù)后面加上一個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-周”
使用已經(jīng)封裝好的SDK進行人臉識別
http://www.itdecent.cn/p/96636db03792
使用已經(jīng)封裝好的SDK進行人臉識別【人臉特征提取比對】
http://www.itdecent.cn/p/ab64464571da
虹軟ArcFace 2.0,java SDK使用、人臉信息識別(年齡、性別)
http://www.itdecent.cn/p/cfe90f82be97
需要完整代碼,加qq:79295735