Motivo de este documento:

 

Al llamar a la función ScanFaceEx, algún usuario desea guardar o ver la imagen WARPED directamente (para verificar que FACE se ha guardado después de ScanFace)

 

 

 

Cómo usar y código de ejemplo:

 

La imagen se almacena en esa ruta en formato {0}-{1}.jpg.

if (Util.IsYes())            {              Console.WriteLine("How many faceEx would you like to register?");                Console.Write(">> ");              int numOfFace = Util.GetInput(1);              if (0 < numOfFace)              {                        int structSize = Marshal.SizeOf(typeof(BS2FaceExWarped));                        BS2FaceExWarped[] faceEx = Util.AllocateStructureArray<BS2FaceExWarped>(1);                userBlob[0].faceExObjs = Marshal.AllocHGlobal(structSize * numOfFace);                        IntPtr curFaceExObjs = userBlob[0].faceExObjs;                        cbFaceOnReadyToScan = new API.OnReadyToScan(ReadyToScanForFace);
                for (int index = 0; index < numOfFace;)                {                  sdkResult = (BS2ErrorCode)API.BS2_ScanFaceEx(sdkContext, deviceID, faceEx, (byte)BS2FaceEnrollThreshold.THRESHOLD_DEFAULT, cbFaceOnReadyToScan);                  if (BS2ErrorCode.BS_SDK_SUCCESS != sdkResult)                    Console.WriteLine("BS2_ScanFaceEx call failed: %d", sdkResult);                  else                  {                                Console.WriteLine("Do you want to save warpped image? [y/n]");                                Console.Write(">> ");                                if (Util.IsYes())                                {                                    int written = 0;                                    int size = (int)faceEx[0].imageLen;                                    IntPtr imgPtr = Marshal.AllocHGlobal(size);                                    Marshal.Copy(faceEx[index].imageData, 0, imgPtr, size);                                    FileStream file = new FileStream(String.Format("{0}-{1}.jpg", userID, index), FileMode.Create, FileAccess.Write);                                    WriteFile(file.Handle, imgPtr, (int)faceEx[index].imageLen, out written, IntPtr.Zero);                                    file.Close();                                }                                userBlob[0].user.numFaces++;                    index++;                                faceEx[0].faceIndex = (byte)index;                                Marshal.StructureToPtr(faceEx[0], curFaceExObjs, false);                                curFaceExObjs += structSize;
                                Thread.Sleep(100);                  }                }
                        cbFaceOnReadyToScan = null;              }            }
C



Resultado:

 

Por favor descargue el adjunto y úselo como referencia.

7