/// <summary>Fonction principale permettant d'inscrire un visage dans la BDD de microsoft après /// avoir vérifié qu'il n'était pas déjà inscrit.</summary> /// <exception cref="PersonneDejaInscriteException"> /// Thrown when a Personne Deja Inscrite error condition occurs. /// </exception> /// <param name="photo">Photo à traiter.</param> public async void TraiterImage(string photo) { try { // Création d'un faceid temporaire à partir de la photo donnée JObject jObjectFaceId = await ReconnaissanceFaciale.FaceRecCreateFaceIdTempAsync(photo); string faceIdTempo = jObjectFaceId.GetValue("faceId").ToString(); // Comparaison du faceId à ceux existant dans la list en BDD microsoft JObject jObjectComparaison = await ReconnaissanceFaciale.FaceRecCompareFaceAsync(faceIdTempo); // Si jObectComparaison est égal à null, alors personne dans la BDD ressemble au visage. if (jObjectComparaison == null) { Saisie.FaceIdTemp = faceIdTempo; } else { // Récupération du pourcentage de reconnaissance du visage double confidence = Convert.ToDouble(jObjectComparaison.GetValue("confidence")); // Si on a trouvé une personne qui ressemble mais la ressemblance n'est pas assez importante // pour dire que la personne a été reconnue, on l'inscrit. if (confidence < 0.7) { Saisie.FaceIdTemp = faceIdTempo; } else { throw new PersonneDejaInscriteException("Inscription impossible : vous êtes déjà inscrits."); } } // On déclare le traitement comme terminé ce qui permettra au timer de stopper l'attente this.traitementTermine = true; } catch (PersonneDejaInscriteException pex) { MetroMessageBox.Show(this, pex.Message, "Erreur", MessageBoxButtons.OK, MessageBoxIcon.Warning); this.Close(); } catch (Exception ex) { MetroMessageBox.Show(this, ex.Message, "Erreur", MessageBoxButtons.OK, MessageBoxIcon.Error); this.traitementOxfordProgressSpinner.Visible = false; this.webcam.Visible = true; this.btnPrendrePhoto.Enabled = true; } }
/// <summary> Tests image. </summary> /// <remarks> Thomas LAURE, 05/12/2017. </remarks> /// <param name="cheminVersImageTemp"> The chemin vers image temporary. </param> private async void TestImage(string cheminVersImageTemp) { TraitementBdd.EventInfo(1337, "Un utilisateur est en train de s'identifier visuellement"); Load_identificationVisuel.Show(); Txt_chargementMetro.Show(); Btn_RetourVisuel.Enabled = false; Btn_VérifierVisuel.Enabled = false; //Cam_Visuel1.StopCapture(); //// Affichage sur le coté gauche de l'image de l'utilisateur. string imgPrev = System.IO.Path.Combine(Application.StartupPath, cheminVersImageTemp); Bitmap bmp = new Bitmap(imgPrev); Img_identificationVisuelPreview.Image = bmp; Img_previewUserReconnu.Image = bmp; try { JObject resultatPhotoTemporaire = await ReconnaissanceFaciale.FaceRecCreateFaceIdTempAsync(cheminVersImageTemp); string faceId = Convert.ToString(resultatPhotoTemporaire.GetValue("faceId")); JObject compareFace = await ReconnaissanceFaciale.FaceRecCompareFaceAsync(faceId); //// Comparaison du retour. //// Si le visage a été reconnu. if (compareFace != null && Convert.ToInt32(compareFace.GetValue("confidence")) >= 0.6) { Cam_Visuel1.Hide(); Img_previewUserReconnu.Show(); Img_identificationVisuelPreview.Hide(); faceIdReconnu = Convert.ToString(compareFace.GetValue("persistedFaceId")); if (TraitementBdd.RecupStatus(faceIdReconnu) == 0) { MetroFramework.MetroMessageBox.Show(this, "Utilisateur révoqué !", "REVOQUE", MessageBoxButtons.OK, MessageBoxIcon.Exclamation & MessageBoxIcon.Warning); TraitementBdd.EventErreur(TraitementBdd.RecupIdUtilisateur(faceIdReconnu), "L'utilisateur révoqué a essayé de s'identifier."); Form identificationVisuel = new Identification1(); identificationVisuel.Location = this.Location; identificationVisuel.StartPosition = FormStartPosition.Manual; identificationVisuel.Show(); this.Close(); } else if (compareFace != null && Convert.ToInt32(compareFace.GetValue("confidence")) == 42) { MetroFramework.MetroMessageBox.Show(this, "Votre profil a été supprimé !", "SUPPRIME", MessageBoxButtons.OK, MessageBoxIcon.Exclamation & MessageBoxIcon.Error); TraitementBdd.EventErreur(TraitementBdd.RecupIdUtilisateur(faceIdReconnu), "Le profil de l'utilisateur qui a essayé de se connecter a été supprimé."); Form identificationVisuel = new Identification1(); identificationVisuel.Location = this.Location; identificationVisuel.StartPosition = FormStartPosition.Manual; identificationVisuel.Show(); this.Close(); } else { MetroFramework.MetroMessageBox.Show(this, "Vous avez bien été reconnu !", "RECONNU", MessageBoxButtons.OK, MessageBoxIcon.Question); AffichageInfoVisage(resultatPhotoTemporaire); TraitementBdd.EventSucces(TraitementBdd.RecupIdUtilisateur(faceIdReconnu), "L'utilisateur a été reconnu visuellement."); Load_identificationVisuel.Hide(); Txt_chargementMetro.Hide(); Btn_continuerToMdp.Show(); Btn_continuerToMdp.Enabled = true; } } else { //// Si le visage n'a pas été reconnu. MetroFramework.MetroMessageBox.Show(this, "Aucun utilisateur reconnu !", "NON RECONNU", MessageBoxButtons.OK, MessageBoxIcon.Exclamation & MessageBoxIcon.Warning); ReconnaissanceFaciale.MailErreur(imgPrev); ReloadPage(); } } catch (Exception ex) { MetroFramework.MetroMessageBox.Show(this, "ERREUR : " + ex.Message, "ERREUR", MessageBoxButtons.OK, MessageBoxIcon.Error & MessageBoxIcon.Stop); ReloadPage(); } return; }