C# USB视频人脸检测
2021-06-03 04:03
标签:包导入 focus gray src partial rgs oat ssi type 此程序基于 虹软人脸识别进行的开发 **前提条件** 将获取到的开发包导入到您的应用中 App_id与SDK_key是在初始化的时候需要使用 所有基本类型在平台库中有定义。 定义规则是在ANSIC 中的基本类型 前加上字母“M”同时将类型的第一个字母改成大写。例如“long” 被定义成“MLong AFR_FSDK_FACEINPUT pbFeature提取到的脸部特征 lFeatureSize特征信息长度 AFR_FSDK_VERSION 描述: 引擎版本信息 定义 ` 原型 https://download.csdn.net/download/zhang1244/10368197 运行效果地址 https://download.csdn.net/download/zhang1244/10368181 相关技术交流,后期可能开发相关与身份证照片进行实名制对比。请继续关注 C# USB视频人脸检测 标签:包导入 focus gray src partial rgs oat ssi type 原文地址:https://www.cnblogs.com/Zzz-/p/10912536.html
SDK下载地址:https://ai.arcsoft.com.cn/ucenter/user/reg?utm_source=csdn1&utm_medium=referral
从虹软官网下载获取ArcFace引擎应用开发包,及其对应的激活码(App_id, SDK_key)
**基本类型**
**”数据结构与枚举**
描述: 脸部信息
定义typedef struct{
MRECT rcFace;
AFR_FSDK_OrientCode lOrient;
} AFR_FSDK_FACEINPUT, *LPAFR_FSDK_FACEINPUT;
成员描述
rcFace脸部矩形框信息
lOrient脸部旋转角度
AFR_FSDK_FACEMODEL
描述: 脸部特征信息定义
typedef struct{
MByte *pbFeature;
MInt32 lFeatureSize;
} AFR_FSDK_FACEMODEL, *LPAFR_FSDK_FACEMODEL;
成员描述定义
typedef struct{
MInt32 lCodebase;
MInt32 lMajor;
MInt32 lMinor;
MInt32 lBuild;
MInt32 lFeatureLevel;
MPChar Version;
MPChar BuildDate;
MPChar CopyRight;
} AFR_FSDK_VERSION, *LPAFR_FSDK_VERSION;
成员描述
lCodebase代码库版本号
lMajor主版本号
lMinor次版本号
lBuild编译版本号,递增
lFeatureLevel特征库版本号
Version字符串形式的版本号
BuildDate编译时间
CopyRight版权
```
枚举
AFR_FSDK_ORIENTCODE
描述: 基于逆时针的脸部方向枚举值
};成员描述
AFR_FSDK_FOC_00 度
AFR_FSDK_FOC_9090度
AFR_FSDK_FOC_270270度
AFR_FSDK_FOC_180180度
AFR_FSDK_FOC_3030度
AFR_FSDK_FOC_6060度
AFR_FSDK_FOC_120120度
AFR_FSDK_FOC_150150度
AFR_FSDK_FOC_210210度
AFR_FSDK_FOC_240240度
AFR_FSDK_FOC_300300度
AFR_FSDK_FOC_330330度
支持的颜色格式
描述: 颜色格式及其对齐规则
定义
ASVL_PAF_I420 8-bit Y层,之后是8-bit的2x2 采样的U层和V层
ASVL_PAF_YUYV Y0, U0, Y1, V0
ASVL_PAF_RGB24_B8G8R8 BGR24, B8G8R8
API ReferenceAFR_FSDK_InitialEngine
描述: 初始化引擎参数原型
MRESULT AFR_FSDK_InitialEngine(
MPChar AppId,
MPChar SDKKey,
Mbyte *pMem,
MInt32 lMemSize,
MHandle *phEngine
);
参数AppId[in] 用户申请SDK时获取的App Id
SDKKey[in] 用户申请SDK时获取的SDK Key
pMem[in] 分配给引擎使用的内存地址
lMemSize[in] 分配给引擎使用的内存大小
phEngine[out] 引擎handle
返回值: 成功返回MOK,否则返回失败code。失败codes如下所列:
MERR_INVALID_PARAM 参数输入非法
MERR_NO_MEMORY 内存不足
AFR_FSDK_ExtractFRFeature
描述: 获取脸部特征参数原型
MRESULT AFR_FSDK_ExtractFRFeature (
MHandle hEngine,
LPASVLOFFSCREEN pInputImage,
LPAFR_FSDK_FACEINPUT pFaceRes,
LPAFR_FSDK_FACEMODEL pFaceModels
);
参数hEngine[in] 引擎handle
pInputImage[in] 输入的图像数据
pFaceRes[in] 已检测到的脸部信息
pFaceModels[out] 提取的脸部特征信息
返回值: 成功返回MOK,否则返回失败code。失败codes如下所列:
MERR_INVALID_PARAM 参数输入非法
MERR_NO_MEMORY 内存不足
AFR_FSDK_FacePairMatching
描述: 脸部特征比较MRESULT AFR_FSDK_FacePairMatching(
MHandle hEngine,
AFR_FSDK_FACEMODEL *reffeature,
AFR_FSDK_FACEMODEL *probefeature,
MFloat *pfSimilScore
);
参数hEngine[in] 引擎handle
reffeature[in] 已有脸部特征信息
probefeature[in] 被比较的脸部特征信息
pfSimilScore[out] 脸部特征相似程度数值
返回值: 成功返回MOK,否则返回失败code。失败codes如下所列:
MERR_INVALID_PARAM 参数输入非法
MERR_NO_MEMORY 内存不足
AFR_FSDK_UninitialEngine
描述: 销毁引擎,释放相应资源原型
MRESULT AFR_FSDK_UninitialEngine(
MHandle hEngine
);
参数
hEngine[in] 引擎handle
返回值: 成功返回MOK,否则返回失败code。失败codes如下所列:
MERR_INVALID_PARAM 参数输入非法
AFR_FSDK_GetVersion原型
const AFR_FSDK_VERSION * AFR_FSDK_GetVersion(
MHandle hEngine
);
相关事例代码using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace ArcsoftFace
{
public struct AFD_FSDK_FACERES
{
public int nFace; // number of faces detected
public IntPtr rcFace; // The bounding box of face
public IntPtr lfaceOrient; // the angle of each face
}
}
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace ArcsoftFace
{
public struct AFR_FSDK_FACEINPUT
{
public MRECT rcFace; // The bounding box of face
public int lfaceOrient; // The orientation of face
}
}
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace ArcsoftFace
{
public struct AFR_FSDK_FACEMODEL
{
public IntPtr pbFeature; // The extracted features
public int lFeatureSize; // The size of pbFeature
}
}
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace ArcsoftFace
{
public struct AFR_FSDK_Version
{
public int lCodebase;
public int lMajor;
public int lMinor;
public int lBuild;
public int lFeatureLevel;
public IntPtr Version;
public IntPtr BuildDate;
public IntPtr CopyRight;
}
}
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Runtime.InteropServices;
namespace ArcsoftFace
{
public class AmFaceVerify
{
/**
* 初始化人脸检测引擎
* @return 初始化人脸检测引擎
*/
[DllImport("libarcsoft_fsdk_face_detection.dll", CallingConvention = CallingConvention.Cdecl)]
public static extern int AFD_FSDK_InitialFaceEngine(string appId, string sdkKey, IntPtr pMem, int lMemSize, ref IntPtr pEngine, int iOrientPriority, int nScale, int nMaxFaceNum);
/**
* 获取人脸检测 SDK 版本信息
* @return 获取人脸检测SDK 版本信息
*/
[DllImport("libarcsoft_fsdk_face_detection.dll", CallingConvention = CallingConvention.Cdecl)]
public static extern IntPtr AFD_FSDK_GetVersion(IntPtr pEngine);
/**
* 根据输入的图像检测出人脸位置,一般用于静态图像检测
* @return 人脸位置
*/
[DllImport("libarcsoft_fsdk_face_detection.dll", CallingConvention = CallingConvention.Cdecl)]
public static extern int AFD_FSDK_StillImageFaceDetection(IntPtr pEngine, IntPtr offline, ref IntPtr faceRes);
/**
* 初始化人脸识别引擎
* @return 初始化人脸识别引擎
*/
[DllImport("libarcsoft_fsdk_face_recognition.dll", CallingConvention = CallingConvention.Cdecl)]
public static extern int AFR_FSDK_InitialEngine(string appId, string sdkKey, IntPtr pMem, int lMemSize, ref IntPtr pEngine);
/**
* 获取人脸识别SDK 版本信息
* @return 获取人脸识别SDK 版本信息
*/
[DllImport("libarcsoft_fsdk_face_recognition.dll", CallingConvention = CallingConvention.Cdecl)]
public static extern IntPtr AFR_FSDK_GetVersion(IntPtr pEngine);
/**
* 提取人脸特征
* @return 提取人脸特征
*/
[DllImport("libarcsoft_fsdk_face_recognition.dll", CallingConvention = CallingConvention.Cdecl)]
public static extern int AFR_FSDK_ExtractFRFeature(IntPtr pEngine, IntPtr offline, IntPtr faceResult, IntPtr localFaceModels);
/**
* 获取相似度
* @return 获取相似度
*/
[DllImport("libarcsoft_fsdk_face_recognition.dll", CallingConvention = CallingConvention.Cdecl)]
public static extern int AFR_FSDK_FacePairMatching(IntPtr pEngine, IntPtr faceModels1, IntPtr faceModels2, ref float fSimilScore);
#region delete
///**
// * 创建人脸检测引擎
// * @param [in] model_path 模型文件夹路径
// * @param [out] engine 创建的人脸检测引擎
// * @return =0 表示成功,=0 表示实际检测到的人脸数量, gray = null;
Image
USB视频 动态画框 源码下载地址
https://download.csdn.net/download/zhang1244/10368237
运行效果地址
https://download.csdn.net/download/zhang1244/10368222
普通人脸照片进行关键点提取以及相关对比相似度
```