目录
前言:
本软件是基于虹软 SDK4.1 c++ for linux 做的一个人脸识别demo,至于选择虹软的理由,因为其简单易用,平台支持全面,最重要的是 免费:), 目前官网提供的免费sdk 支持linux64,window64,window32,以及ios的3.0 及以前版本(SDK4.1属于增值项,只有3个月的试用期),并提供了相关的开发文档,开发文档对SDK中每个函数的说明及使用都有相应的示例,对于实际开发很有帮助。见虹软官网开发者中心 (arcsoft.com.cn)
本项目是针对sdk4.1 在Linux下使用Qt开发的一个demo,试过3.0版本的sdk以及4.1版本的sdk,给我的感受是:sdk4.1相比以前的版本,识别速度更快,更稳定,实时性能更好,同时,也兼容了口罩识别。
虹软SDK的获取
获取方法:
进入虹软官网开发者中心 (arcsoft.com.cn)
》注册账号->选择 AI开放平台->人脸识别SDK
》填写相关信息,根据自己想要的平台的版本进行选择和创建应用。
--->这里选择linux64:sdk4.1,点击获取试用码。(sdk4.1属于增值版,有3个月的免费试用期,4之前版本的可以免费使用)
》得到注册APP_ID和SDK_KEY和(activeKey)激活码,在使用SDK开发时需要用到。
SDK激活方式:
/*#### 初次使用需要进行激活,激活信息会保存下来。只有mac地址发生变化,才需要激活####*/
MRESULT res = ASFOnlineActivation((char*)APPID, (char*)SDKKEY,(char*)ACTIVEKEY);
// 可以通过 ASFGetActiveFileInfo 函数获取激活信息
ASF_ActiveFileInfo activeFileInfo = {0};
res = ASFGetActiveFileInfo(&activeFileInfo); // 获取激活信息
SDK的各种API在官方提供的文档中都有详细的介绍,同时也包含了简单易懂的代码示例。文档可在下载的SDK demo包中找到。
软件介绍:
该demo主要包含三个部分
1. 人脸注册
2. 图像识别
3. 视频识别
以下代码并不完整,只是为了便于说明,完整代码项目会放在文章末尾链接。
软件界面如下:
Qt控件布局:
SDK功能实现
注意:图像识别和视频识别的引擎是有区别的,进行图像模式识别时,只能一张一张检测,而在采用视频模式的情况下,带有人脸追踪功能,能够连续多张检测,同时维持着faceID字段,这可以在视频模式中进行不同的优化,如检测条件判断,只要faceID发生变化,则重新检测人脸信息。所以在进行单张图片对比检测时,选择图像模式,会有更高的精度,在对视频流进行检测时,应选择视频模式,提高视频实时检测的流畅性。
1. 人脸注册
人脸注册是对照片进行 人脸检测,提取对应的人脸特征,保存到sqlite数据库(Qt自带) 和 QMap中,QMap存储了人名和对应的人脸特征。
引擎初始化:使用SDK之前,必须对引擎进行初始化,所有的操作都和对应的引擎有关。mask设置对引擎所能开放的功能。
/*#### 引擎初始化 ####*/
//设置引擎的功能
MInt32 mask = ASF_FACE_DETECT | ASF_FACERECOGNITION | ASF_AGE | ASF_GENDER | ASF_LIVENESS | ASF_IR_LIVENESS | ASF_MASKDETECT;
// 图片模式的初始化,对于视频模式,将ASF_DETECT_MODE_IMAGE换成ASF_DETECT_MODE_VIDEO即可
res =