/// <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);
示例#3
0
 public static extern int ASGE_FSDK_GenderEstimation_StaticImage(IntPtr engine, ref ImageData pImgData,
                                                                 ref ExtraFaceInput pFaceRes, out ExtraFaceResult pGenderRes);