/// <summary> /// 人脸比对 /// </summary> /// <param name="data1">第一张人脸数据</param> /// <param name="data2">第二张人脸数据</param> /// <returns></returns> public float Compare(byte[] data1, byte[] data2) { try { FaceFeature feature1 = new FaceFeature(); feature1.feature = Marshal.AllocHGlobal(data1.Length); Marshal.Copy(data1, 0, feature1.feature, data1.Length); feature1.featureSize = data1.Length; IntPtr pLocalFeature1 = Marshal.AllocHGlobal(Marshal.SizeOf(feature1)); Marshal.StructureToPtr(feature1, pLocalFeature1, false); FaceFeature feature2 = new FaceFeature(); feature2.feature = Marshal.AllocHGlobal(data2.Length); Marshal.Copy(data2, 0, feature2.feature, data2.Length); feature2.featureSize = data2.Length; IntPtr pLocalFeature2 = Marshal.AllocHGlobal(Marshal.SizeOf(feature2)); Marshal.StructureToPtr(feature2, pLocalFeature2, false); float similar = 0.0f; ASFAPI.ASFFaceFeatureCompare(hEngine, pLocalFeature1, pLocalFeature2, out similar); return(similar); } catch (Exception ex) { return(0.0f); } }
/// <summary> /// 人脸比对 /// </summary> /// <param name="data1">第一张人脸数据</param> /// <param name="data2">第二张人脸数据</param> /// <returns></returns> public float Compare(byte[] data1, byte[] data2) { FaceFeature feature1 = new FaceFeature(); FaceFeature feature2 = new FaceFeature(); IntPtr ptr1 = Marshal.AllocHGlobal(data1.Length); IntPtr ptr2 = Marshal.AllocHGlobal(data2.Length); Marshal.Copy(data1, 0, ptr1, data1.Length); Marshal.Copy(data2, 0, ptr2, data2.Length); feature1.feature = ptr1; feature1.featureSize = 1032; feature2.feature = ptr2; feature2.featureSize = 1032; float similar = 0.0f; ASFAPI.ASFFaceFeatureCompare(hEngine, feature1, feature2, ref similar); return(similar); }