コード例 #1
0
ファイル: prisePhoto.cs プロジェクト: TheTota/ProjOXFORD-G1
        /// <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;
            }
        }
コード例 #2
0
        /// <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;
        }