Exemplo n.º 1
0
        /// <summary>
        /// Cherche le résultat de la Face - Verify dans un string
        /// </summary>
        /// <param name="source"></param>
        /// <param name="recherche"></param>
        /// <returns>isIdentical et confidence</returns>
        static Result_face_verify SearchFaceVerify(string source, string recherche)
        {
            bool   find              = false;
            int    lenSource         = source.Length;
            string bufferIsIdentical = "";

            int indexIsIdentical = source.IndexOf(recherche); // -1 si il n'y est pas

            Result_face_verify resultat = new Result_face_verify {
            };

            if (indexIsIdentical != -1)
            {
                int newIndex = indexIsIdentical + 13;  // "isIdentical":true,  ou  "isIdentical":false,
                while (!find && newIndex < lenSource)
                {
                    if (source[newIndex] != ',')
                    {
                        bufferIsIdentical += source[newIndex];
                        newIndex++;
                    }
                    else
                    {
                        find = true;
                    }
                }

                // {"isIdentical":false,"confidence":0.18558}
                int indexConfidence = source.IndexOf("confidence");
                if (indexConfidence != -1)
                {
                    newIndex = indexConfidence + 12;
                    find     = false;
                    string bufferConfidence = "";
                    while (!find && newIndex < lenSource)
                    {
                        if (source[newIndex] != '}')
                        {
                            bufferConfidence += source[newIndex];
                            newIndex++;
                        }
                        else
                        {
                            find = true;
                        }
                    }
                    resultat.IsIdentical = Convert.ToBoolean(bufferIsIdentical);
                    resultat.Confidence  = float.Parse(bufferConfidence, CultureInfo.InvariantCulture.NumberFormat);
                }
            }
            return(resultat);
        }
Exemplo n.º 2
0
        /// <summary>
        /// Gère le processus de la reconnaissance d'image
        /// </summary>
        static async void AnalysePhotosAsync()
        {
            bool keep_going = false;

            PackageHost.WriteInfo("--------------------- Face - Detect ---------------------\n");
            Console.WriteLine("--------------------- Face - Detect ---------------------\n");

            // Obtention des faceID des photos "témoins"
            string[] fichiersTemoins    = Directory.GetFiles(@"D:\images\Photos_Temoins");
            string[] listeFaceIDTemoins = await FaceIDPhotosTemoins(fichiersTemoins);

            // Obtention du faceID de la photo qui vient d'être prise
            string imageFilePath = @"D:\images\image.jpg";
            string faceId2       = await FaceIDAsync(imageFilePath);

            // Si y'a un bien un faceID on peut continuer l'analyse
            if (faceId2 != "")
            {
                Console.WriteLine("\nfaceId2 : " + faceId2 + "\n");
                keep_going = true;
            }
            // Sinon on affiche un message
            else
            {
                Console.WriteLine("\nfaceId2 invalide\n");
            }

            if (keep_going)
            {
                bool samePerson = false;
                PackageHost.WriteInfo("--------------------- Face - Verify ---------------------\n");
                Console.WriteLine("--------------------- Face - Verify ---------------------\n");
                int i = 0;
                // Envoi à Cognitives Services des faceID de chaque photo témoin avec le faceID de la photo prise
                while (i < listeFaceIDTemoins.Length && !samePerson)
                {
                    Result_face_verify verif = await MakeRequestFaceVerify(listeFaceIDTemoins[i], faceId2);

                    PackageHost.WriteInfo("\nVerification :\nisIdentical : " + verif.IsIdentical + ", condifence : " + Convert.ToString(verif.Confidence) + "\n\n\n");
                    Console.Write("\nVerification :\nisIdentical : " + verif.IsIdentical + ", condifence : " + Convert.ToString(verif.Confidence) + "\n\n\n");

                    // Si la personne qui a été prise en photo est dans les photos témoins, on ouvre la porte
                    if (verif.IsIdentical == true)
                    {
                        samePerson = true;
                        PackageHost.CreateMessageProxy("SerrurePackage").OpenDoor();
                    }
                    i++;
                }
                // S'il n'y a pas eu de correspondance, envoi de la photo avec PushBullet
                if (!samePerson)
                {
                    Console.Write("\nPersonne autorisee non reconnue\n");
                    PackageHost.CreateMessageProxy("PushBullet").PushFile(@"D:\Images\image.jpg", "Ca sonne !", "Device");
                }
            }
            else
            {
                Console.Write("\nFace - Verify impossible, faceId non valide\n");
                PackageHost.WriteInfo("\nMessage envoyé sur PushBullet");
                PackageHost.CreateMessageProxy("PushBullet").PushFile(@"D:\Images\image.jpg", "Ca sonne !", "Device");
            }
        }