private void updateInfoButton_Click(object sender, EventArgs e) { if (listBox1.SelectedIndex >= 0 && listBox1.SelectedIndex < FirstPageView.persons.Count) { string chosenName = listBox1.GetItemText(listBox1.SelectedItem); var person = FirstPageView.persons.Where(p => String.Equals(p.Name, chosenName)).First(); DateTime dt; if (!DateTime.TryParseExact(birthDateField.Text, "yyyy-MM-dd", new CultureInfo("lt-LT"), DateTimeStyles.None, out dt) || !DateTime.TryParseExact(missingDateField.Text, "yyyy-MM-dd hh:mm", new CultureInfo("lt-LT"), DateTimeStyles.AssumeLocal, out dt)) { MessageBox.Show("The missing or birth date is not correct!"); } else { person.BirthDate = birthDateField.Text; person.MissingDate = missingDateField.Text; person.AdditionalInfo = additionalInfoField.Text; string updateMessage = "Information updated!"; if (picSelected) { int viablePicsCount = 0; int notViablePicsCount = 0; picSelected = false; foreach (string filename in picFilenames) { tempImage = new Image <Bgr, byte>(filename); if (ImageHandler.GetFaceFromImage(tempImage) == null) { notViablePicsCount++; } else { var face = ImageHandler.GetFaceFromImage(tempImage); var grayFace = face.Convert <Gray, Byte>(); ImageHandler.SaveGrayFacetoFile(chosenName, grayFace); viablePicsCount++; } } updateMessage = String.Format("{0}/{1} pics was added, information was updated", viablePicsCount, picFilenames.Count); } MessageBox.Show(updateMessage); } } else { MessageBox.Show("Select person from the list."); } }
private void createNewPersonDataButton_Click(object sender, EventArgs e) { int viablePicsCount = 0; int notViablePicsCount = 0; if (picSelected) { string newName = nameField.Text; string birthDate = birthDateField.Text; string missingDate = missingDateField.Text; string additionalInfo = additionalInfoField.Text; DateTime dt; Regex regx = new Regex(@"^[\p{L}\p{M}' \.\-]+$"); if (regx.IsMatch(newName) && DateTime.TryParseExact(birthDate, "yyyy-MM-dd", new CultureInfo("lt-LT"), DateTimeStyles.None, out dt) && DateTime.TryParseExact(missingDate, "yyyy-MM-dd hh:mm", new CultureInfo("lt-LT"), DateTimeStyles.AssumeLocal, out dt)) { picSelected = false; string directory = newName; directory = directory.Replace(" ", "_"); if (!File.Exists(Application.StartupPath + "/data/" + directory + "/rep.bmp")) { ImageHandler.SaveRepresentativePic(tempImage.ToBitmap(), directory); } foreach (string filename in picFilenames) { tempImage = new Image <Bgr, byte>(filename); if (ImageHandler.GetFaceFromImage(tempImage) == null) { notViablePicsCount++; } else { var newFace = ImageHandler.GetFaceFromImage(tempImage); var newGrayFace = newFace.Convert <Gray, Byte>(); ImageHandler.SaveGrayFacetoFile(directory, newGrayFace); viablePicsCount++; } } if (viablePicsCount > 0) { listBox1.Items.Add(newName); FirstPageView.persons.Add(new Person(newName, birthDate, missingDate, additionalInfo)); ImageHandler.WriteDataToFile(FirstPageView.persons); MessageBox.Show(String.Format("{0} was added to database. ({1}/{2} pics was suitable.)", newName, viablePicsCount, picFilenames.Count)); pictureBox2.Image = nightOwl.Properties.Resources.NewPerson; nameField.Text = ""; missingDateField.Text = ""; birthDateField.Text = ""; additionalInfoField.Text = ""; nameField.Enabled = true; } else { MessageBox.Show("No good photos for face recognition!"); } } else { MessageBox.Show("Please insert correct information!"); } } else { MessageBox.Show("Please add some photos!"); } }