/// <summary> /// ArcFace构造函数,在这里将完成ArcFace引擎的初始化 /// </summary> /// <param name="appId">APP_ID</param> /// <param name="sdkKey">SDK_KEY</param> /// <param name="detectMode">video模式或者image模式</param> /// <param name="combinedMask">要用到的引擎组合 定义的常量在ArcFaceFunction下</param> /// <param name="detectFaceOrientPriority">检测脸部角度的优先值 默认仅0度</param> /// <param name="detectFaceMaxNum">最大检测人脸的个数[1,50] 默认25</param> /// <param name="detectFaceScaleVal">数值化的最小人脸尺寸,视频[2,16]/图片[2,32],推荐值16 默认16</param> public ArcFaceCore(string appId, string sdkKey, uint detectMode, uint combinedMask, DetectionOrientPriority detectFaceOrientPriority = DetectionOrientPriority.ASF_OP_0_ONLY, int detectFaceMaxNum = 25, int detectFaceScaleVal = 16) { this.Init(appId, sdkKey, detectMode, combinedMask, (int)detectFaceOrientPriority, detectFaceMaxNum, detectFaceScaleVal); this.AppId = appId; this.SdkKey = sdkKey; switch (detectMode) { case ArcFaceDetectMode.VIDEO: this.DetectMode = "Video"; break; case ArcFaceDetectMode.IMAGE: this.DetectMode = "Image"; break;; } this.DetectFaceOrientPriority = detectFaceOrientPriority; this.CombinedMask = combinedMask; }
/// <summary> /// 获得引擎Handler /// </summary> /// <param name="mode">模式(图像/视频流)</param> /// <param name="orientPriority">检测方向的优先级</param> /// <param name="detectFaceScaleVal">数值化的最小人脸尺寸</param> /// <returns></returns> public static IntPtr GetEngineInstance(uint mode, DetectionOrientPriority orientPriority, int detectFaceScaleVal = 12) { hEngine = IntPtr.Zero; try { ResultCode result = (ResultCode)ASFAPI.ASFInitEngine(mode, (int)orientPriority, detectFaceScaleVal, 50, (int)(EngineMode.人脸检测 | EngineMode.人脸识别 | EngineMode.性别识别 | EngineMode.年龄识别 | EngineMode.角度识别), ref hEngine); if (result == ResultCode.成功) { return(hEngine); } else { throw new Exception(result.ToString()); } } catch (Exception ex) { throw ex; } }