/// <summary> /// 通用的评估函数 /// </summary> /// <param name="locate"></param> /// <param name="estimation"></param> /// <param name="autoDispose"></param> /// <returns>包含额外信息的位置</returns> internal LocateResult Estimation(LocateResult locate, Action <ExtraFaceInput> estimation, bool autoDispose = true) { if (!locate.HasFace) { return(locate); } var faceInput = new ExtraFaceInput { lFaceNumber = locate.FaceCount, pFaceRectArray = IntPtrExtensions.StructArrayToPtr(locate.Faces), pFaceOrientArray = IntPtrExtensions.StructArrayToPtr(locate.FacesOrient.Select(code => (int)code).ToArray()) }; try { estimation(faceInput); return(locate); } finally { if (autoDispose) { locate.Dispose(); } Marshal.FreeHGlobal(faceInput.pFaceRectArray); Marshal.FreeHGlobal(faceInput.pFaceOrientArray); } }
public static extern int ASAE_FSDK_AgeEstimation_Preview(IntPtr engine, ref ImageData pImgData, ref ExtraFaceInput pFaceRes, out ExtraFaceResult pAgeRes);
public static extern int ASGE_FSDK_GenderEstimation_StaticImage(IntPtr engine, ref ImageData pImgData, ref ExtraFaceInput pFaceRes, out ExtraFaceResult pGenderRes);