Exemplo n.º 1
0
 public static int FaceAlignmentFromFaceRegion(byte[] image, HIWITFaceRegion faceRegion, ref HIWITFaceInfo faceInfo)
 {
     if (image == null) return HIWIT_ERR_ILLEGAL;
     IntPtr regionPtr = Marshal.AllocHGlobal(Marshal.SizeOf(typeof(HIWITFaceRegion)));
     Marshal.StructureToPtr(faceRegion, regionPtr, false);
     IntPtr infoPtr = Marshal.AllocHGlobal(Marshal.SizeOf(typeof(HIWITFaceInfo)));
     try {
         int r = HIWITFaceAlignmentFromFaceRegion(APPIP, APPKEY, image, image.Length, regionPtr, infoPtr);
         if (r == HIWIT_ERR_NONE) faceInfo = (HIWITFaceInfo)Marshal.PtrToStructure(infoPtr, typeof(HIWITFaceInfo));
         return r;
     }
     finally {
         Marshal.FreeHGlobal(regionPtr);
         Marshal.FreeHGlobal(infoPtr);
     }
 }
Exemplo n.º 2
0
        public static int FaceVerify(byte[] probeData, byte[] galleryData, ref float score, HIWITFaceInfo? probeInfo = null, HIWITFaceInfo? galleryInfo = null)
        {
            if (probeData == null || galleryData == null) return HIWIT_ERR_ILLEGAL;
            int size = Marshal.SizeOf(typeof(HiwitLib.HIWITFaceInfo));

            IntPtr probePtr = IntPtr.Zero;
            IntPtr galleryPtr = IntPtr.Zero;

            try {
                if (probeInfo != null) {
                    probePtr = Marshal.AllocHGlobal(size);
                    Marshal.StructureToPtr(probeInfo, probePtr, false);
                }

                if (galleryInfo != null) {
                    galleryPtr = Marshal.AllocHGlobal(size);
                    Marshal.StructureToPtr(galleryInfo, galleryPtr, false);
                }

                return HIWITFaceVerifyTwoImage(APPIP, APPKEY, probeData, probeData.Length, probePtr, galleryData, galleryData.Length, galleryPtr, ref score);
            }
            finally {
                Marshal.FreeHGlobal(probePtr);
                Marshal.FreeHGlobal(galleryPtr);
            }
        }