更新时间:2020-02-11
  • 声明

    本手册属江苏高泰软件技术有限公司版权所有,侵权必究。

    本手册专供用户、本公司职员以及经本公司许可的人员使用。未经公司书面同意,任何单位或个人不得以任何方式复制、翻印、改编手册的全部或部分内容。

    本公司保留在事先不通知用户的情况下,根据产品的改进修改本手册内容的权利。

    在使用过程中,如发现本手册与实际产品有任何不符或疑问,请与本公司联系。



    江苏高泰软件技术有限公司

    联系地址:南京山西路金山大厦A座2802室

    邮政编码:210029

    电话号码:(025)86794859

    传真号码:(025)86794501

  • 版本及修改记录

    • 版本 描述 日期
      v1.0 创建 2019-11-01
  • 一、产品概述

    高泰人脸识别平台为公司自主研发,面向技术型开发者提供的人脸技术开发包,本版本包含人脸检测追踪等方法。基于该方案,开发者可以轻松的构建包含人脸检测、采集的应用。
    • 1.1 运行环境

      android 4.4 (API Level 19)及以上

    • 1.2 开发环境

      Android studio

    • 1.3 授权方式

      离线人脸识别SDK授权为以设备维度为主,每台硬件设备需要一个独立的授权,此授权的校验是基于设备的硬件指纹,被授权的设备,在有效期内可以通过授权文件初始化并运行SDK。

      需要重新获取授权的情况:设备授权不变,仅需要使用序列号重新激活而已。

      授权失效的情况:需要重新购买序列号,之前的序列号失效。

      1. 授权激活一台设备后,此设备硬件发生变更(包含硬件损坏);

      2. 安卓刷机(可能)

    • 1.4 Android权限需求

      <uses-permission android:name="android.permission.CAMERA" />

      <uses-permission android:name="android.permission.INTERNET" />

      <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />

      <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />

      <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />

  • 二、基础SDK接口说明

    • 2.1 核心类IFaceSDKManager

      描述:主要提供人脸识别检测,特征码生成,特征码比对功能

      调用方式:

      IFaceSDKManager faceSDKManager = FaceApi.getInstance().getFaceSDKManager();

      2.1.1 初始化引擎: public FaceResult init()

      描述:初始化引擎,必须初始化

      2.1.2 设置模型地址: public void setModelPath(String modelPath)

      描述:设置模型地址化

      输入参数:

      参数名 类型 说明 举例
      modelPath String 模型地址

      2.1.3 激活注册: public FaceResult registMachine(String code)

      描述:人脸识别激活注册

      2.1.4 人脸检测设置: public FaceResult setFaceSDKConfig(GTFaceSDKConfig sdkConfig)

      描述:设置人脸检测相关配置

      2.1.5 检测人脸: public FaceResult detectFace(byte[] data, GTImageType imagetype, int width, int height)

      描述:检测人脸

      输入参数:

      参数名 类型 说明 举例
      data Byte[] 图片数据
      imagetype GTImageType 数据格式类型
      width int 图片数据宽度
      height int 模型地址

      2.1.6 提取特征码: public FaceResult extractFRFeature(byte[] data, GTImageType imagetype, int width, int height, GTFaceDetectInfo faceDetectInfo GTFaceDetectInfo faceInfo)

      描述:提取特征码

      输入参数:

      参数名 类型 说明 举例
      data Byte[] 摄像头图片数据
      imagetype GTImageType 数据格式类型
      width int 图片数据宽度
      height int 模型地址
      faceInfo GTFaceDetectInfo 人脸检测的相关数据

      成功返回FaceResult data:

      List<GTFaceFeature>

      字段 类型 说明 举例
      rect GTRect 人脸区域信息
      feature GTFeature 人脸特征码信息

      2.1.7 特征数据对比: public FaceResult compareFeatures(GTFeature var0, GTFeature var1)

      描述:人脸特征对比,返回识别得分

      输入参数:

      参数名 类型 说明 举例
      var0 GTFeature 人脸特征信息
      var1 GTFeature 人脸特征信息

      成功返回FaceResult data:

      Long (识别得分)

      2.1.8 设置检测模式:public FaceResult setLiveCheckMode(int liveCheckMode)

      描述:设置检测模式 0:普通 1:活体检测(暂不支持)

      实现此接口的API版本:

      参数名/返回值 类型 说明 举例
      返回值 Void

      成功返回FaceResult data:

      List<GTFaceFeature>

      2.1.9 引擎销毁:public FaceResult unInit()

      描述:引擎销毁

      注意:每次退出程序必须引擎销毁

      2.1.10 返回值说明:public FaceResult unInit()

      返回值 说明
      0 成功
      100001 引擎初始化失败
      100002 功能暂不支持
      100003 引擎未初始化
      100004 检测失败
      100005 提取特征码失败
      100006 注册失败
      100007 模型路径错误
      100008 传入数据错误
      100009 配置错误
    • 2.2 人员特征信息存储 FacePersonFetureDBDal

      提供对人员特征数据进行添加,修改,删除,查询等操作

    • 2.3 识别记录存储 IdentificationRecordDBDal

      提供对识别记录进行操作添加,删除,查询等操作

    • 2.4 人脸特征信息缓存服务 FacePersonCacheManager

      使用此工具类可以对人脸特征信息进行缓存存储。

  • 三、业务SDK集成说明

    • 3.1 SDK包依赖引入说明

      开发仅需引入基础项目

      api project(':facelibrary')

    • 3.2 基础配置初始化

      DeviceConfig提供如下设置:

      • 设备号,设备密码设置
      • 开启投票机制(人脸数超过3张,进行投票算法,对比2张人脸超过识别分数才能通过)
      • 开启推送(人脸识别结果推送到广告机显示设备)
      • 开启播放人脸识别结果语音

      示例

      //初始化信息 DeviceConfig deviceConfig = DeviceConfig.getInstance(); deviceConfig.setDeviceCode(deviceCode);//设置平台设备号 deviceConfig.setDeviceLoginpwd(loginpwd);//设置平台设备密码 deviceConfig.setOpenVote(true);//开启投票机制 deviceConfig.setPlayVoiceFaceRecognitionResult(true);//启动播放语音 deviceConfig.setPushFaceRecognitionResult(true);//启动识别结果推送 //初始化数据库 FaceApi.getInstance().initDataBases(this); //初始化模型 FaceApi.getInstance().initFaceOsModelFile(this); //启动服务 ServicesManager.startServices(mContext);

    • 3.3 IPC摄像机接入

      • 本机摄像头接入

      CameraPreviewManager

      设置摄像头信息,启动摄像头进行截图,可以设置摄像头截图规则。

      示例

      // 设置前置摄像头CameraPreviewManager.getInstance().setCameraFacing(CameraPreviewManager.CAMERA_FACING_FRONT); // 设置后置摄像头 // CameraPreviewManager.getInstance().setCameraFacing(CameraPreviewManager.CAMERA_FACING_BACK); // 设置USB摄像头 // CameraPreviewManager.getInstance().setCameraFacing(CameraPreviewManager.CAMERA_USB); //设置视频流回显角度 CameraPreviewManager.getInstance().setDisplayOrientation(90); //设置截图间隔 CameraCaptureIntervalTime cameraCaptureIntervalTime = new CameraCaptureIntervalTime() { @Override public long getIntervalTime(String cameraId) { return cameraCaptureIntervalTimeSupport.getIntervalTime(cameraId); } }; CameraPreviewManager.getInstance().setCameraCaptureIntervalTime(cameraCaptureIntervalTime); //视频流数据监听 CameraPreviewManager.getInstance().startPreview(this, mPreviewView, mWidth, mHeight, new CameraDataCallback() { @Override public void onGetCameraData(byte[] data, Camera camera, int width, int height) { //相应处理视频流数据 } });

      • 海康摄像头接入

      HaiKangManager

      设置摄像头信息,启动摄像头进行截图,可以设置摄像头截图规则。

      示例

      String cameraFilePath = Environment.getExternalStorageDirectory().getPath() + "/images/screenshot"; HaiKangManager haiKangManager = HaiKangManager.getInstance(this,cameraFilePath); //设置摄像头 List haiKangCameraModels = new ArrayList(); HaiKangCameraModel haiKangCameraModel = new HaiKangCameraModel("1","192.168.2.213",8000,"admin","password","0"); haiKangCameraModels.add(haiKangCameraModel); HaiKangCameraModel haiKangCameraModel1 = new HaiKangCameraModel("2","192.168.2.60",8000,"admin"," password ","1"); haiKangCameraModels.add(haiKangCameraModel1); haiKangManager.setCameraList(haiKangCameraModels); //截图图片数据 CameraCaptureCallback cameraCaptureListener = new CameraCaptureCallback() { @Override public void onCaptureImage(String cameraId, String filePath, Date createTime) { // TODO Auto-generated method stub } }; haiKangManager.setCameraCaptureCallback(cameraCaptureListener); //设置截图间隔 CameraCaptureIntervalTime cameraCaptureIntervalTime = new CameraCaptureIntervalTime() { @Override public long getIntervalTime(String cameraId) { return 1000/2; } }; haiKangManager.setCameraCaptureIntervalTime(cameraCaptureIntervalTime); haiKangManager.startCamera();

    • 3.4 人脸识别简单模式

      此SDK已经完全封装了一个处理视频流并进行人脸检测,人脸比对整体流程,并通过回调接口将人脸检测结果回调给调用方的类:FaceDetectHelper.java。不需要我们处理任何视频流的问题,只需要依照demo项目中的代码进行调用即可。

      //初始化识别帮助类 FaceDetectHelper faceDetectHelper = FaceDetectHelper.getInstance(context); //设置摄像头数据人脸检测角度 faceDetectHelper.setFaceDetectAngle(270); faceDetectHelper.setOnFaceDetectListener(new faceDetectHelper.OnFaceDetectListener() { @Override public void onDetectFace(List faces) { //检测到的人脸数据 } });

      摄像头回调数据中调用处理:

      CameraPreviewManager.getInstance().startPreview(this, mPreviewView, mWidth, mHeight, new CameraDataCallback() { @Override public void onGetCameraData(byte[] data, Camera camera, int width, int height) { faceDetectHelper.faceDetectBitmapAsync(data, width, height); } });

    • 3.5 网络库

      DcHttpClientUtils

      提供基础http get post请求

    • 3.6 后台服务功能

      • 同步设备信息
      • 同步人员机构信息
      • 下载人脸特征码信息
      • 同步临时进出人员
      • 上报识别记录
      • 上报识别照
      • 上报设备心跳

      //启动服务 ServicesManager.startServices(mContext);

      //停止服务 ServicesManager.stopServices(mContext);

    • 3.7 BitmapUtils

      提供图片相关操作,例如旋转,压缩,转换等

    • 3.8 FileUtils

      提供文件读取,写入,删除,复制,解压等相关操作

    • 3.9 ImageUtils

      提供图片获取相册路径,转换等相关操作

  • 四、UI SDK集成说明

    • 4.1 SDK包依赖引入说明

      andserver:提供设备支持WEB服务

      GTFaceAndroidSDKUI: UI层SDK

      api files('libs/andserver-1.1.4.aar')

      api files('libs/GTFaceAndroidSDKUI.aar')

    • 4.2 后台服务功能

      • web服务,用于广告机接收识别信息
      • 日志上报
      • 同步轮播界面资源信息

      //启动服务 UIServicesManager.startServices(mContext, true);

      //停止服务 UIServicesManager.stopServices(mContext);

    • 4.3 功能界面

      • CarouselDisplayActivity

        轮播展示界面,显示广告图,广告文字,视频等信息,触摸返回上一级界面

      • PersonDisplayActivity

        识别结果展示界面,显示识别人员姓名,识别照片等信息