人脸sdk

人脸sdk主要功能包含人脸检测、人脸跟踪、人脸得分、人脸质量、离线人脸识别。

人脸sdk集成

如果双屏异显直接采用Rokid显示方案,也可以直接参考在线人脸识别集成

  1. sdk集成

  2. build.gradle集成人脸车牌sdk

     implementation 'com.rokid.alliance.magicsdk:magicsdk:1.1.7'
    
  3. 加载模型

    函数:

     RKAlliance.getInstance().loadFaceModel(getApplicationContext(), new PreparedListener() {
                     @Override
                     public void onPrepared() {
                         //TODO
                    }
    

    参数:

    字段 类型 说明
    context Context ApplicationContext
    preparedListener PreparedListener 加载模型成功回调函数
  4. 初始化人脸sdk

    函数:

     RKAlliance.getInstance().initFaceSDK(getApplicationContext(), roi, new PreparedListener() {
                 @Override
                 public void onPrepared() {
                     //TODO
                 }
             });
    

    参数:

    字段 类型 说明
    context Context ApplicationContext
    roi Rect 人脸识别有效区域,传null为所有区域有效
    preparedListener PreparedListener 初始化成功回调函数
  5. 注册人脸回调

    函数:

     RKAlliance.getInstance().registerFaceListener(new Callback<RKFaceModel>() {
                 @Override
                 public void onDataResult(RKFaceModel rkFaceModel, byte[] bytes) {
                     //TODO
                 }
             });
    

    RKFaceModel:

    字段 类型 说明
    width int 原始图片宽(可以理解为Camera出来的数据)
    height int 原始图片高
    data byte[] 原始图片数据
    faces List 对应图片包含的人脸

    RKFaceDO:

    字段 类型 说明
    faceRectF RectF 人脸对应原图的位置
    trackId int 人脸追踪id,每个id的生命周期为从检测到新的人脸开始到此人脸不存在摄像头画面
    data byte[] 原始图片数据
    quality float 人脸质量分,过滤掉非人脸图片建议quality>=40
    faceScore float 人脸得分(相似度)
    recogBitmap Bitmap 人脸抠图
    featid String 人脸特征,**用于离线人脸**

离线人脸识别

添加离线人脸数据

  1. 人脸sdk集成
  2. 添加离线人脸

    示例:

     ExtractFeatResult featResult = FaceDataManager.getInstance().extractFeat(Bitmap: bitmap);
     if (featResult.getResultCode() == 0) {//图片特征提取成功 
         FaceDataManager.getInstance().addPerson(Person: person, List<FeatFileInfo> featFileInfos, null, true);//添加到数据库
     }
    

    API说明:

    ExtractFeatResult featResult = FaceDataManager.getInstance().extractFeat(Bitmap: bitmap);

    参数:

    字段 类型 说明
    bitmap Bitmap 需要提取人脸特征的人脸照片(正脸)
    featResult ExtractFeatResult 提取特征的返回值

    ExtractFeatResult:

    字段 类型 说明
    resultCode int 0为成功提取,其他为提取失败
    resultMsg String 提取失败原因
     ErrorCode errorCode = FaceDataManager.getInstance().addPerson(Person: person, List<FeatFileInfo> featFileInfos, String covertId, boolean needSave);
    

    参数:

    字段 类型 说明
    person Person 添加人脸个人信息
    featFileInfos List<FeatFileInfo> 添加人脸特征及保存图片路径集合(每个人可以添加多张图片)
    covertId String 封面id(与需要作为封面的照片featid一致),当识别到该人时UI将展示此coverId对应的照片
    needSave boolean 添加单人脸使用true
    errorCode ErrorCode 添加人脸到数据库返回值

    Person:

    字段 类型 说明
    name String 姓名
    cardNo String 身份证号码
    birthPlace String 出生地
    tag String 标签(如逃犯等)
    isAlarm boolean 是否告警

    FeatFileInfo:

    字段 类型 说明
    featId String 人脸图片特征id
    filePath String 人脸图片存储路径,用于识别展示

    ErrorCode:

    字段 类型 说明
    code int 0为成功,其他为失败
    msg String 添加失败信息
  3. 根据识别结果查询数据库

    示例:

     final UserInfo info = FaceIdManager.getInstance().getUserInfoByFid(RKFaceDO.featid);
    

    参数:

    字段 类型 说明
    featid String 识别到的人脸的特征id
    info UserInfo 从离线人脸数据库根据特征id查询到的人员信息

    UserInfo:

    字段 类型 说明
    uid String 添加人脸生成的userid
    name String 添加人脸时输入的姓名
    cardno String 添加人脸是输入的身份证号
    nativeplace String 添加人脸时输入的住址信息
    description String 添加人脸时输入的其他信息
    isAlarm boolean 是否告警,添加人脸时输入

在线人脸识别

如果需要自行定义人脸识别UI交互,此部分可以仅作为参考。 集成Rokid maven库则不需要开发双屏异显,或者可以获取源码进行部分ui调整。在线识别参考

车牌sdk

车牌sdk主要包含车牌号码识别功能。车牌的sdk和人脸sdk在同一个仓库。

车牌sdk集成

  1. 车牌sdk集成

  2. 加载模型

    函数:

         RKAlliance.getInstance().loadLPRModel(getApplicationContext(), new PreparedListener() {
                     @Override
                     public void onPrepared() {
    
                     }
                 });
    

    参数:

    字段 类型 说明
    context Context ApplicationContext
    preparedListener PreparedListener 加载模型成功回调函数
  3. 初始化车牌sdk

    函数:

      RKAlliance.getInstance().initPlateSDK(new PreparedListener() {
                 @Override
                 public void onPrepared() {
    
                 }
             });
    

    参数:

    字段 类型 说明
    preparedListener PreparedListener 初始化成功回调函数
  4. 注册车牌回调

    函数:

     RKAlliance.getInstance().registerLPRCallback(new Callback<RKLPRModel>() {
                 @Override
                 public void onDataResult(RKLPRModel rklprModel, byte[] bytes) {
    
                 }
             });
    

    RKLPRModel:

    字段 类型 说明
    width int 原始图片宽(可以理解为Camera出来的数据)
    height int 原始图片高
    lps List<RKLPRDO> 所有检测到的车牌

    RKLPRDO:

    字段 类型 说明
    position RectF 车牌在原始图的位置
    licensePlate String 车牌号码
    score float 相似度

离线车牌识别

导入离线车牌数据后,按照sdk集成第4步回调中即可拿到识别的车牌号码,从导入的车牌数据库查询号牌信息展示即可,如果集成Rokid开发好的双屏异显,离线识别这部分只需要进行数据导入即可。

results matching ""

    No results matching ""