/// <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); }
/// <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"); } }