Example #1
0
        /// <summary> Event handler. Called by IdentificationVisuel for load events. </summary>
        /// <remarks> Thomas LAURE, 05/12/2017. </remarks>
        /// <param name="sender"> Source of the event. </param>
        /// <param name="e">      Event information. </param>
        private void IdentificationVisuel_Load(object sender, EventArgs e)
        {
            Load_identificationVisuel.Hide();
            Txt_chargementMetro.Hide();
            Lbl_infoutilisateur.Hide();
            Img_previewUserReconnu.Hide();
            Btn_continuerToMdp.Hide();
            Btn_continuerToMdp.Enabled = false;

            //// Chemin vers le dossier temporaire de l'application.
            cheminVersDossierTemp = cheminRacine + "\\temp";

            //// Liste les caméras.
            listCams = Cam_Visuel1.GetVideoCaptureDevices().ToList <WebCameraId>();

            foreach (WebCameraId camera in listCams)
            {
                List_Camera.Items.Add(camera.Name);
            }

            List_Camera.SelectedIndex = 0;
            try
            {
                Cam_Visuel1.StartCapture(listCams[0]);
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message, "ATTENTION !", MessageBoxButtons.OK, MessageBoxIcon.Information);
            }

            //// Crée le dossier temporaire s'il n'existe pas.
            if (!System.IO.Directory.Exists(cheminVersDossierTemp))
            {
                Directory.CreateDirectory(cheminVersDossierTemp);
            }

            //// Supprime le cache.
            RemoveCache();
        }
Example #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;
        }