Esempio n. 1
0
        /// <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;
        }
Esempio n. 2
0
 /// <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;
     }
 }