فهرست منبع

Доработка функционала в окне посещений

Вячеслав Терешенко 2 سال پیش
والد
کامیت
f63958feb3

+ 3 - 45
ImpulseVision/FormGuard.cs

@@ -84,7 +84,6 @@ namespace ImpulseVision
                 {
                     IsRecognized = true;
                 }
-                //this.Text = IsRecognized.ToString();
                 UserName = faceName;
                 NotifyPropertyChanged();
             }
@@ -134,8 +133,6 @@ namespace ImpulseVision
             set
             {
                 cameraCaptureFace = value;
-                //imgDetectFace.Dispatcher.Invoke(DispatcherPriority.Normal, new Action(() => { imgDetectFace.Source = BitmapToImageSource(cameraCaptureFace); }));
-                //PbxFaces.Image = BitmapToImageSource(cameraCapture);
                 PbxEther.Image = cameraCapture;
 
                 NotifyPropertyChanged();
@@ -155,22 +152,15 @@ namespace ImpulseVision
         int CountCams = -1;
         //множество для хранения списка камер
         HashSet<string> HtBefore = new HashSet<string>();
-        //пути доступа к изображениям пользователей
-        List<Pictures> LstUserPictures = new List<Pictures>();
         SqlConnection SCon = new SqlConnection(Properties.Settings.Default.ImpulseVisionAppConnectionString);
         #endregion
 
-        struct Pictures
-        {
-            public string UserID, PicturePath;
-        }
-
         /// <summary>
         /// получение данных об изображениях 
         /// </summary>
         public void GetFacesList()
         {
-            //haar cascade classifier
+            //файл Хаара
             if (!File.Exists(Config.HaarCascadePath))
             {
                 string text = "Не удаётся найти файл данных - каскад Хаара:\n\n";
@@ -183,7 +173,7 @@ namespace ImpulseVision
             FaceList.Clear();
             FaceData FaceItem = null;
 
-            // Create empty directory / file for face data if it doesn't exist
+            // создание директории если она отсутствовала
             if (!Directory.Exists(Config.FacePhotosPath))
             {
                 Directory.CreateDirectory(Config.FacePhotosPath);
@@ -241,13 +231,12 @@ namespace ImpulseVision
             if (BgrFrame != null)
             {
                 try
-                {//for emgu cv bug
+                {
                     Image<Gray, byte> grayframe = BgrFrame.Convert<Gray, byte>();
 
                     Rectangle[] faces = HaarCascade.DetectMultiScale(grayframe, 1.2, 10, new System.Drawing.Size(50, 50), new System.Drawing.Size(200, 200));
 
 
-                    //detect face
                     FaceName = "Лицо не обнаружено";
                     foreach (var face in faces)
                     {
@@ -295,37 +284,6 @@ namespace ImpulseVision
                 handler(this, new PropertyChangedEventArgs(propertyName));
         }
 
-        /// <summary>
-        /// получение id и путей доступа к изображениям пользователей
-        /// </summary>
-        private bool GetPicturesPath()
-        {
-            SCon.Open();
-            string Query1 = $@"select UserID,Picture
-                    from FaceImages";
-            SqlCommand Cmd = new SqlCommand(Query1, SCon);
-            SqlDataReader Res = Cmd.ExecuteReader();
-            if(Res.HasRows)
-            {
-                LstUserPictures.Clear();
-                while(Res.Read())
-                {
-                    Pictures Pic = new Pictures();
-                    Pic.UserID = Res["UserID"].ToString();
-                    Pic.PicturePath = Res["Picture"].ToString();
-                    LstUserPictures.Add(Pic);
-                }
-            }
-            else
-            {
-                MessageBox.Show("Не удалось получить информацию об изображениях!", "ImpulseVision", MessageBoxButtons.OK, MessageBoxIcon.Error);
-                SCon.Close();
-
-                return false;
-            }
-            SCon.Close();
-            return true;
-        }
         private void FormGuard_Load(object sender, EventArgs e)
         {
             // TODO: This line of code loads data into the 'impulseVisionAppDataSet1.Staffs' table. You can move, or remove it, as needed.

تفاوت فایلی نمایش داده نمی شود زیرا این فایل بسیار بزرگ است
+ 505 - 418
ImpulseVision/FormMain.Designer.cs


+ 45 - 57
ImpulseVision/FormMain.cs

@@ -163,8 +163,7 @@ namespace ImpulseVision
 
                     Rectangle[] Faces = HaarCascade.DetectMultiScale(grayframe, 1.2, 10, new System.Drawing.Size(50, 50), new System.Drawing.Size(200, 200));
 
-                    //detect face
-                    FaceName = "No face detected";
+                    FaceName = "Лицо не обнаружено";
                     foreach (var face in Faces)
                     {
                         BgrFrame.Draw(face, new Bgr(53, 23, 247), 2);
@@ -175,11 +174,7 @@ namespace ImpulseVision
                     CameraCapture = BgrFrame.ToBitmap();
                 }
                 catch (Exception ex)
-                {
-
-                    //todo log
-                }
-
+                { }
             }
         }
         /// <summary>
@@ -187,7 +182,6 @@ namespace ImpulseVision
         /// </summary>
         public void GetFacesList()
         {
-            //haar cascade classifier
             if (!File.Exists(Config.HaarCascadePath))
             {
                 string text = "Файл каскада Хаара не обнаружен:\n\n";
@@ -220,7 +214,6 @@ namespace ImpulseVision
         {
             if (ImageList.Size != 0)
             {
-                //Eigen Face Algorithm
                 FaceRecognizer.PredictionResult result = recognizer.Predict(DetectedFace.Resize(100, 100, Inter.Cubic));
                 FaceName = NameList[result.Label];
                 CameraCaptureFace = DetectedFace.ToBitmap();
@@ -279,6 +272,11 @@ namespace ImpulseVision
                 CmbCams.SelectedIndex = 0;
                 SelectedCameraID = 0;
             }
+            else
+            {
+                MessageBox.Show("Видеоустройства не обнаружены!", "ImpulseVision", MessageBoxButtons.OK, MessageBoxIcon.Error);
+                this.Close();
+            }
         }
         /// <summary>
         /// удаление пользователя из системы
@@ -318,7 +316,6 @@ where ID = '{IdUser}'";
             }
             try
             {
-                //удалить из папки фотографию пользователя
                 File.Delete(Application.StartupPath + "\\" + Config.FacePhotosPath + $"{PhotoName}.bmp");
             }
             catch
@@ -462,7 +459,7 @@ where PassportSeria = '{TbxPasportSeria.Text.Trim()}' and PassportNum = '{TbxPas
             Cmd.Parameters.AddWithValue("@seria", TbxPasportSeria.Text.Trim());
             Cmd.Parameters.AddWithValue("@number", TbxPasportNum.Text.Trim());
             Cmd.Parameters.AddWithValue("@phone", TbxPhone.Text.Trim());
-            Cmd.ExecuteNonQuery();//выполнить запрос
+            Cmd.ExecuteNonQuery();
             SCon.Close();
 
             SCon.Open();
@@ -473,14 +470,11 @@ where PassportSeria = '{TbxPasportSeria.Text.Trim()}' and PassportNum = '{TbxPas
             if(ResID.HasRows)
             {
                 ResID.Read();
-                //получить id только что добавленного пользователя
                 AddingUserID = ResID["LastID"].ToString();
             }
             SCon.Close();
 
-            //изменить размеры изображения
             DetectedFace = DetectedFace.Resize(100, 100, Inter.Cubic);
-            //сохранить изображение в папку
             DetectedFace.Save(Config.FacePhotosPath + $"{TbxFirstname.Text.Trim()}{TbxPasportSeria.Text.Trim()}{TbxPasportNum.Text.Trim()}" + Config.ImageFileExtension);
 
             PhotoPath = Config.FacePhotosPath + $"{TbxFirstname.Text.Trim()}{TbxPasportSeria.Text.Trim()}{TbxPasportNum.Text.Trim()}" + Config.ImageFileExtension;
@@ -489,13 +483,12 @@ where PassportSeria = '{TbxPasportSeria.Text.Trim()}' and PassportNum = '{TbxPas
 
             ProgressOperation.Value = 50;
             TslStatus.Text = "Добавление нового пользователя...";
-            //сохранение пути до фотографии
             SCon.Open();
             string QueryAddPathImage = $@"insert into FaceImages (UserID,Picture)
 values ({AddingUserID},'{PhotoPath}')";
 
             Cmd = new SqlCommand(QueryAddPathImage, SCon);
-            Cmd.ExecuteNonQuery();//выполнить запрос на добавление пути фото для пользователя
+            Cmd.ExecuteNonQuery();
             SCon.Close();
             MessageBox.Show("Успешно сохранено!", "ImpulseVision", MessageBoxButtons.OK, MessageBoxIcon.Information);
 
@@ -599,24 +592,6 @@ values ({AddingUserID},'{PhotoPath}')";
             TslStatus.Text = "Готов";
         }
 
-        private void BtnCheck_Click(object sender, EventArgs e)
-        {
-            TslStatus.Text = "Подождите.. выполняется анализ лица..";
-            ProgressOperation.Value = 45;
-            //TrainImageFromDir();
-
-            //FaceDifferent();
-
-            //Task.Factory.StartNew(new Action(() => TrainImageFromDir()));
-            //ProgressTrain.Value = 55;
-            //TslStatus.Text = "Готов";
-        }
-
-        private void PbxEther_Click_1(object sender, EventArgs e)
-        {
-            //HideAdding();
-        }
-
         private void STools_Click(object sender, EventArgs e)
         {
             BtnEditUser.Visible = false;
@@ -746,6 +721,7 @@ values ({AddingUserID},'{PhotoPath}')";
             BtnDelUser.Visible = false;
             TslSelCamText.Visible = false;
             CmbCams.Visible = false;
+            CbxFilterDate.Checked = false;
 
             TabPages.SelectTab(3);
             GetJournalVisits();
@@ -764,18 +740,29 @@ select Users.ID,Users.Lastname +' '+ Users.Firstname + ' '+Users.Patronymic as F
 [Date],Identification
 from UserTraffic ut join Users on ut.UserID = Users.ID
 ";
-            if(DtpFiniteDate.Visible)
+            if (CbxFilterDate.Checked)
             {
-                QueryGetVisits += $"  where [Date] = '{DtpFiniteDate.Value.Date}'";
+                if (DtpFiniteDate.Visible)
+                {
+                    QueryGetVisits += $"  where [Date] = '{DtpFiniteDate.Value.Date}'";
+                }
+                else
+                {
+                    QueryGetVisits += $"  where [Date] between '{DtpDateStart.Value.Date}' and '{DtpDateEnd.Value.Date}'";
+                }
+                QueryGetVisits += $@"  and Users.Lastname +' '+ Users.Firstname + ' '+Users.Patronymic like '%{TbxFindUser.Text.Trim()}%'";
             }
             else
+                QueryGetVisits += $@" where Users.Lastname +' '+ Users.Firstname + ' '+Users.Patronymic like '%{TbxFindUser.Text.Trim()}%'";
+            if(!CbxIsAuthentification.Checked)
             {
-                QueryGetVisits += $"  where [Date] between '{DtpDateStart.Value.Date}' and '{DtpDateEnd.Value.Date}'";
+                QueryGetVisits += "  and Identification = 1";
             }
-            QueryGetVisits += $@"  and Users.Lastname +' '+ Users.Firstname + ' '+Users.Patronymic like '%{TbxFindUser.Text.Trim()}%'";
+
             SqlCommand Cmd = new SqlCommand(QueryGetVisits, SCon);
             SqlDataReader Res = Cmd.ExecuteReader();
-
+            
+            TslStatus.Text = "Загрузка данных...";
             ProgressOperation.Value = 30;
 
             TabJournal.Controls.Clear();
@@ -827,15 +814,15 @@ from UserTraffic ut join Users on ut.UserID = Users.ID
                         CurrentOvals.RPanelTimeExit.BackColor = ColorTranslator.FromHtml("#C3EB78");
                     }
                 }
+                TslStatus.Text = "Готов";
+                ProgressOperation.Value = 100;
             }
             else
             {
-                MessageBox.Show("При выбранных параметрах сортировки, результаты отсутствуют!", "ImpulseVision", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
+                TslStatus.Text = "При выбранных параметрах сортировки, результаты отсутствуют";
+                ProgressOperation.Value = 0;
             }
             SCon.Close();
-
-            TslStatus.Text = "Готов";
-            ProgressOperation.Value = 100;
         }
 
         private void OvalsObject_Click(object sender, EventArgs e)
@@ -895,13 +882,6 @@ from UserTraffic ut join Users on ut.UserID = Users.ID
             PanelPeriod.Visible = CmbSortDate.SelectedIndex == 1;
             DtpFiniteDate.Visible = CmbSortDate.SelectedIndex == 0;
         }
-        int LocX = 0;
-        private void TmAnim_Tick(object sender, EventArgs e)
-        {
-            //LocX = LblTest.Location.X;
-            //LocX++;
-            //LblTest.Location = new Point(LocX, LblTest.Location.Y);
-        }
 
         private void DtpFiniteDate_ValueChanged(object sender, EventArgs e)
         {
@@ -974,17 +954,11 @@ from UserTraffic ut join Users on ut.UserID = Users.ID
                         Keys[Res["ID"].ToString()] = Res["FIO"].ToString();
                     }
                 }
-                else
-                {
-                    MessageBox.Show("В данный момент журнал отклонённых пуст!", "ImpulseVision", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
-                    SCon.Close();
-                    return;
-                }
                 SCon.Close();
             }
             catch
             {
-                MessageBox.Show("Ошибка получени данных журнала, повторите попытку позже!", "ImpulseVision", MessageBoxButtons.OK, MessageBoxIcon.Error);
+                MessageBox.Show("В данный момент журнал пуст!", "ImpulseVision", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
                 SCon.Close();
                 return;
             }
@@ -1051,5 +1025,19 @@ from UserTraffic ut join Users on ut.UserID = Users.ID
             CurrentCard = sender as CardJournal;
             CurrentCard.BackColor = Color.FromArgb(195, 235, 120);
         }
+
+        private void CbxFilterDate_CheckedChanged(object sender, EventArgs e)
+        {
+            CmbSortDate.Enabled = CbxFilterDate.Checked;
+            DtpFiniteDate.Enabled = CbxFilterDate.Checked;
+            DtpDateStart.Enabled = CbxFilterDate.Checked;
+            DtpDateEnd.Enabled = CbxFilterDate.Checked;
+            GetJournalVisits();
+        }
+
+        private void CbxIsAuthentification_CheckedChanged(object sender, EventArgs e)
+        {
+            GetJournalVisits();
+        }
     }
 }

BIN
ImpulseVision/bin/Debug/ImpulseVision.exe


BIN
ImpulseVision/bin/Debug/Source/TrainedImages/Алекс8596851691.bmp


برخی فایل ها در این مقایسه diff نمایش داده نمی شوند زیرا تعداد فایل ها بسیار زیاد است