public Human GetHumanFromId(int id) { return (ServicesWorker.GetInstance <DatabaseService>().Query <Human>(new Dictionary <string, object> { { "Id", id } })); }
public void LoadFromDb() { People.Clear(); bool has_deleting_objs = false; foreach (var human in ServicesWorker.GetInstance <DatabaseService>().QueryByClassName <Human>()) { if (Directory.Exists("Images\\" + human.Name)) { var fileNames = Directory.GetFiles("Images\\" + human.Name, "*.jpg"); human.ImagesEmgu = new List <Image <Gray, byte> >(fileNames.Select(fileName => new Image <Gray, byte>(fileName)).ToList()); People.Add(human); } else { has_deleting_objs = true; } } if (has_deleting_objs) { ServicesWorker.GetInstance <DatabaseService>().Clear(); foreach (var human in People) { ServicesWorker.GetInstance <DatabaseService>().Insert <Human>(human.Id, human); } } }
public void AddHuman(string label, List <Image <Gray, byte> > images) { var id = People.Count; var human = new Human(id, label, images); People.Add(human); ServicesWorker.GetInstance <DatabaseService>().Insert <Human>(id, human); }
public void Load() { ServicesWorker.GetInstance <HumanService>().LoadFromDb(); if (File.Exists("facerecognizer")) { _faceRecognizer.Load("facerecognizer"); _faceRecognizerTrained = true; } if (File.Exists("genderfacerecognizer")) { _genderFaceRecognizer.Load("genderfacerecognizer"); } }
public void TrainFaceRecognizer() { var allImages = new List <Image <Gray, byte> >(); var idList = new List <int>(); foreach (var human in ServicesWorker.GetInstance <HumanService>().People) { allImages.AddRange(human.ImagesEmgu); idList.AddRange(human.ImagesEmgu.Select(hm => human.Id)); } if (idList.Count == 0 || allImages.Count == 0) { throw new NoHumanException("Нет данных о людях для обучения!"); } _faceRecognizer.Train(allImages.ToArray(), idList.ToArray()); _faceRecognizerTrained = true; _faceRecognizer.Save("facerecognizer"); }
private bool RecognizeFamiliarPerson(Image <Gray, byte> detectedFace) { var result = _faceRecognizer.Predict(detectedFace); if (result.Label != -1) { var human = ServicesWorker.GetInstance <HumanService>().GetHumanFromId(result.Label); if (human != null) { Recognized?.Invoke(human.Name, result.Distance); } else { Recognized?.Invoke(result.Label.ToString(), result.Distance); } return(true); } return(false); }
public List <Image <Gray, byte> > AddImagesToHuman(string name) { var images = new List <Image <Gray, byte> >(); var count = 0; var capture = new Capture(); while (count < FaceCount) { var image = capture.QueryFrame().ToImage <Gray, byte>(); var detectedFace = DetectFace(image); if (detectedFace != null) { images.Add(detectedFace); count++; OnCount(count, FaceCount); Thread.Sleep(500); } } ServicesWorker.GetInstance <HumanService>().AddHuman(name, images); capture.Dispose(); return(images); }