|
@@ -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();
|
|
|
+ }
|
|
|
}
|
|
|
}
|