android 4.4 (API Level 19)及以上
-
声明
本手册属江苏高泰软件技术有限公司版权所有,侵权必究。
本手册专供用户、本公司职员以及经本公司许可的人员使用。未经公司书面同意,任何单位或个人不得以任何方式复制、翻印、改编手册的全部或部分内容。
本公司保留在事先不通知用户的情况下,根据产品的改进修改本手册内容的权利。
在使用过程中,如发现本手册与实际产品有任何不符或疑问,请与本公司联系。
江苏高泰软件技术有限公司
联系地址:南京山西路金山大厦A座2802室
邮政编码:210029
电话号码:(025)86794859
传真号码:(025)86794501
-
版本及修改记录
-
版本 描述 日期 v1.0 创建 2019-11-01
-
-
一、产品概述
高泰人脸识别平台为公司自主研发,面向技术型开发者提供的人脸技术开发包,本版本包含人脸检测追踪等方法。基于该方案,开发者可以轻松的构建包含人脸检测、采集的应用。-
1.1 运行环境
-
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
识别结果展示界面,显示识别人员姓名,识别照片等信息
-
CarouselDisplayActivity
-
-