从虹软开放了2.0版本SDK以来,由于具有免费、离线使用的特点,我们公司在人脸识别门禁应用中使用了虹软SDK,识别效果还不错,因此比较关注虹软SDK的官方动态。近期上线了ArcFace 3.0 SDK版本,确实做了比较大的更新。上一篇主要介绍了关于Android平台算法的改进,本篇将介绍一下关于Windows平台算法的更新。
- 特征比对支持比对模型选择,有生活照比对模型和人证比对模型
- 识别率、防攻击效果显著提升
- 特征值更新,升级后人脸库需重新注册
- 人脸检测同时支持全角度及单一角度
- 新增了一种图像数据传入方式
在V3.0版本接入过程中,发现使用新的图像数据结构还是具有一定难度的,本文将从以下几点对该图像数据结构及使用方式进行介绍
- SDK接口变动
- 图像数据结构
- 步长的作用
- OpenCV图像数据结构转换为虹软图像数据结构
一、SDK 接口变动
在接入ArcFace 3.0 SDK时,发现新增了ASFDetectFacesEx、ASFFaceFeatureExtractEx、ASFProcessEx、ASFProcessEx_IR一组接口,该组接口使用LPASF_ImageData
结构体指针的方式传入图像数据,以人脸检测接口为例,具体接口比对如下:
原始接口:
MRESULT ASFDetectFaces(
MHandle hEngine, //
[in] 引擎handle
MInt32 width, //
[in] 图片宽度
MInt32 height, //
[in] 图片高度
MInt32 format, //
[in] 颜色空间格式
MUInt8* imgData, //
[in] 图片数据
LPASF_MultiFaceInfo detectedFaces, //
[out]检测到的人脸信息
ASF_DetectModel detectModel = ASF_DETECT_MODEL_RGB // [in] 预留字段,当前版本使用默认参数即可
);
新增接口:
MRESULT ASFDetectFacesEx(
MHandle hEngine, //
[in] 引擎handle
LPASF_ImageData imgData, //
[in] 图片数据
LPASF_MultiFaceInfo detectedFaces, //
[out] 检测到的人脸信息
ASF_DetectModel detectModel = ASF_DETECT_MODEL_RGB // [in] 预留字段,当前版本使用默认参数即可
);
相对于原始接口,新增接口通过传入LPASF_ImageData
图像数据结构指针替代原始接口传入图像数据的方式。
二、图像数据结构
新增的图像数据结构引入了步长pi32Pitch
的概念。
步长定义:图像对齐后一行的字节数。
2.1 虹软图像数据结构
图像结构定义:
typedef LPASVLOFFSCREEN LPASF_ImageData;
typedef struct __tag_ASVL_OFFSCREEN
{
MUInt32 u32PixelArrayFormat;
MInt32 i32Width;
MInt32 i32Height;
MUInt8* ppu8Plane[4];
MInt32 pi32Pitch[4];
}ASVLOFFSCREEN, *LPASVLOFFSCREEN;
虹软官方文档中对该图像数据结构的介绍:
类型 | 变量名 | 描述 |
---|---|---|
MUInt32 | u32PixelArrayFormat | 颜色格式 |
MI |