예제 #1
0
        public FacenetResponseInformations RecognizeFace(string baseImage, string img1, string img2, string img3)
        {
            FacenetHandler             facenet             = new FacenetHandler();
            FacenetRequestInformations requestInformations = new FacenetRequestInformations {
                baseImage = baseImage, img1 = img1, img2 = img2, img3 = img3
            };
            WebRequest request = facenet.SendMessage("recognizeFaces", "POST", requestInformations);
            FacenetResponseInformations facenetResponse = (FacenetResponseInformations)facenet.GetWebResponse <FacenetResponseInformations>(request);

            return(facenetResponse);
        }
예제 #2
0
        public FacenetResponseInformations CheckFace(byte[] baseImage, byte[] photo, byte[] photo1)
        {
            Thread t1 = new Thread(new ParameterizedThreadStart(ThreadAdjsutImage));

            t1.Name = "Photos 1";
            ThreadParam param = new ThreadParam(photo, 1, AdjustBright);

            t1.Start(param);

            Thread t2 = new Thread(new ParameterizedThreadStart(ThreadAdjsutImage));

            t2.Name = "Photos 2";
            param   = new ThreadParam(photo1, 2, AdjustBright);
            t2.Start(param);

            t1.Join();
            t2.Join();

            double distance = -10;

            try {
                FacenetResponseInformations facenetResponse = RecognizeFace(Convert.ToBase64String(baseImage), ListOfFaces[0], ListOfFaces[1], ListOfFaces[2]);

                distance = facenetResponse.distance;

                if (distance < 0.0f)
                {
                    throw new ResponseException("Erro", "Erro inesperado, favor entrar em contato com o supoerte");
                }

                return(facenetResponse);
            } catch (ResponseException e) {
                if (distance == -1f)
                {
                    throw new ResponseException("Erro", "Não foi possível detectar sua face, por favor tente novamente");
                }

                if (distance == -2f)
                {
                    throw new ResponseException("Erro", "Desculpe, não é possível validar presença com foto de outra foto");
                }

                throw e;
            } catch {
                throw new ResponseException("Erro", "Erro ao carregar arquivos para o reconhecimento");
            } finally {
                ListOfFaces.Clear();
            }
        }
예제 #3
0
        private void RecognizeFace()
        {
            Face face = new Face(this.Informations.Code, this.Informations.Photo);
            FacenetResponseInformations facenetResponse = face.CheckFace((byte[])this.queryNameImage[1], this.Informations.Photo1, this.Informations.Photo2);

            if (facenetResponse.distance <= 1.1f)
            {
                isFaceCorrect = true;
            }
            else
            {
                isFaceCorrect = false;
            }

            facesDistance = facenetResponse.distance;
            timeResponse  = facenetResponse.time;
        }