美文网首页
java人脸识别 虹软ArcFace 2.0,java SDK使

java人脸识别 虹软ArcFace 2.0,java SDK使

作者: 团结wang | 来源:发表于2018-12-04 15:14 被阅读0次

    虹软产品地址: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

    相关文章

      网友评论

          本文标题:java人脸识别 虹软ArcFace 2.0,java SDK使

          本文链接:https://www.haomeiwen.com/subject/ongmcqtx.html