/// <summary> /// 初始化引擎 /// </summary> /// <param name="detectMode">识别模式</param> /// <param name="orientPriority">识别角度</param> /// <param name="detectFaceMaxNum">最大人脸数[1,10]</param> /// <param name="combinedMask">功能组合</param> /// <param name="detectFaceScaleVal">识别的最小人脸比例(仅支持2.x及3.x版本)</param> public void InitEngine(ASF_DetectMode detectMode, ArcSoftFace_OrientPriority orientPriority, int detectFaceMaxNum, ASF_Mask combinedMask, int detectFaceScaleVal = 16) { if (_version >= 4 && combinedMask.HasFlag(ASF_Mask.ASF_FACERECOGNITION) && !combinedMask.HasFlag(ASF_Mask.ASF_MASKDETECT))//4.x提取特征值必须要判断是否佩戴口罩特性 { combinedMask |= ASF_Mask.ASF_MASKDETECT; } CombinedMask = combinedMask; IntPtr hEngine = IntPtr.Zero; if (_version <= 2 && orientPriority == ArcSoftFace_OrientPriority.ASF_OP_ALL_OUT) { orientPriority = ArcSoftFace_OrientPriority.ASF_OP_0_ONLY; } var result = _version >= 4 ? ASFFunctions.ASFInitEngine(detectMode, orientPriority, detectFaceMaxNum, (int)combinedMask, out hEngine) : ASFFunctions.Compatible.ASFInitEngine(detectMode, orientPriority, detectFaceScaleVal, detectFaceMaxNum, (int)combinedMask, out hEngine); if (result == MResult.MOK) { EngineHandler = hEngine; if (_version == 2)//2.x需要先初始化引擎后才可以获取到版本信息 { GetVersion(); } return; } throw new Exception($"引擎初始化错误.{result}"); }
public static extern MResult ASFProcessEx_IR(IntPtr hEngine, ASVLOFFSCREEN imgData, ASF_MultiFaceInfo detectedFaces, ASF_Mask combinedMask = ASF_Mask.ASF_IR_LIVENESS);
public static extern MResult ASFProcess_IR(IntPtr hEngine, int width, int height, int format, IntPtr imgData, ASF_MultiFaceInfo detectedFaces, ASF_Mask combinedMask = ASF_Mask.ASF_IR_LIVENESS);