/// <summary> /// 年龄检测 /// </summary> /// <param name="pEngine">引擎Handle</param> /// <param name="imageInfo">图像数据</param> /// <param name="multiFaceInfo">人脸检测结果</param> /// <returns>年龄检测结构体</returns> public static AgeInfo AgeEstimation(FaceEngine faceEngine, Image image, MultiFaceInfo multiFaceInfo, out int retCode) { retCode = -1; AgeInfo ageInfo = new AgeInfo(); try { if (multiFaceInfo.faceNum <= 0) { return(ageInfo); } //人脸信息检测 retCode = faceEngine.ASFProcessEx(image, multiFaceInfo, FaceEngineMask.ASF_AGE); if (retCode == 0) { //获取年龄信息 retCode = faceEngine.ASFGetAge(out ageInfo); } } catch (Exception ex) { LogUtil.LogInfo(typeof(FaceUtil), ex); } return(ageInfo); }
/// <summary> /// 获取年龄结果 /// </summary> /// <param name="pEngine">引擎handle</param> /// <param name="ageInfo">out 年龄结果</param> /// <returns>返回0表示正常;返回负数请根据ErrorCodeUtil类注释查看;其他值请在官网-帮助中心查询</returns> public int ASFGetAge(out AgeInfo ageInfo) { int retCode = -1; ageInfo = new AgeInfo(); IntPtr pAgeInfo = MemoryUtil.Malloc(MemoryUtil.SizeOf <ASF_AgeInfo>()); //调用SDK接口 retCode = ASFFunctions.ASFGetAge(pEngine, pAgeInfo); if (retCode != 0) { MemoryUtil.Free(pAgeInfo); return(retCode); } //转化结果 ASF_AgeInfo asfAgeInfo = new ASF_AgeInfo(); asfAgeInfo = MemoryUtil.PtrToStructure <ASF_AgeInfo>(pAgeInfo); ageInfo.num = asfAgeInfo.num; if (ageInfo.num > 0) { ageInfo.ageArray = new int[ageInfo.num]; Marshal.Copy(asfAgeInfo.ageArray, ageInfo.ageArray, 0, ageInfo.num); } MemoryUtil.FreeArray(pAgeInfo); return(retCode); }