[BioStar 2 SDK] ¿Cómo registrar la imagen de la cara directamente en el dispositivo?

Creado por: Loberi Loest

Fecha de modificación: Vie., Dic. 31, 2021 a las 5:11 A. M.


Si desea registrar la imagen directamente como un dispositivo, ingrese el código a continuación.

 

Si la imagen se refiere al tipo "jpg" y si el estado de la imagen es borroso, puede haber un problema con la autenticación. En ese caso, regístrese directamente en el dispositivo.

 

  

Si no puede registrarse, probablemente debería cambiar el estado de la imagen. Por favor, consulte lo siguiente.

https://support.supremainc.com/a/solutions/articles/24000072538?lang=en 


Console.WriteLine("Do you want to register from image? [y/n]");
                    Console.Write(">> ");
                    if (Util.IsYes())
                    {
                        Console.WriteLine("Enter the face image path and name:");
                        Console.Write(">> ");
                        string imagePath = Console.ReadLine();
 
                        if (!File.Exists(imagePath))
                        {
                            Console.WriteLine("Invalid file path");
                            return;
                        }
 
                        Image faceImage = Image.FromFile(imagePath);
                        if (!faceImage.RawFormat.Equals(System.Drawing.Imaging.ImageFormat.Jpeg))
                        {
                            Console.WriteLine("Invalid image file format");
                            return;
                        }
                                                IntPtr imageData = IntPtr.Zero;
                        UInt32 imageLen = 0;
                        if (Util.LoadBinary(imagePath, out imageData, out imageLen))
                        {
                            if (0 == imageLen)
                            {
                                Console.WriteLine("Empty image file");
                                return;
                            }
 
                            int structHeaderSize = Marshal.SizeOf(typeof(BS2FaceExUnwarped));
                            int totalSize = structHeaderSize + (int)imageLen;
                            userBlob[0].faceExObjs = Marshal.AllocHGlobal(totalSize);
                            IntPtr curFaceExObjs = userBlob[0].faceExObjs;
 
                            BS2FaceExUnwarped unwarped = Util.AllocateStructure<BS2FaceExUnwarped>();
                            unwarped.flag = 0;
                            unwarped.imageLen = imageLen;
 
                            Marshal.StructureToPtr(unwarped, curFaceExObjs, false);
                            curFaceExObjs += structHeaderSize;
 
                            CopyMemory(curFaceExObjs, imageData, imageLen);
 
                            userBlob[0].user.numFaces = 1;
                            unwarpedMemory = true;
                        }
                    }

L
Loberi es el autor de este artículo de solución.

¿Le resultó útil? No

Enviar comentarios
Lamentamos no haberle podido ayudar más. Sus comentarios nos ayudarían a mejorar este artículo.