public void GetFacesList() { //haar cascade classifier haarCascade = new HaarCascade(Config.HaarCascadePath); faceList.Clear(); string line; FaceData faceInstance = null; //split face text file StreamReader reader = new StreamReader(Config.FaceListTextFile); while ((line = reader.ReadLine()) != null) { string[] lineParts = line.Split(':'); faceInstance = new FaceData(); faceInstance.FaceImage = new Image <Gray, byte>(Config.FacePhotosPath + lineParts[0] + Config.ImageFileExtension); faceInstance.PersonName = lineParts[1]; faceList.Add(faceInstance); } foreach (var face in faceList) { imageList.Add(face.FaceImage); lList.Add(face.PersonName); } reader.Close(); }
public void LoadKnownFaces() { _haarCascade = new CascadeClassifier("Cascades/haarcascade_frontalface_default.xml"); _knownFaces.Clear(); string line; var reader = new StreamReader(Config.FaceListTextFile); while ((line = reader.ReadLine()) != null) { var lineParts = line.Split(':'); var faceInstance = new FaceData { FaceImage = new Image <Gray, byte>(Config.FacePhotosPath + lineParts[0] + Config.ImageFileExtension), PersonName = lineParts[1], FaceId = int.Parse(Regex.Match(lineParts[0], @"\d+").Value), }; _knownFaces.Add(faceInstance); } reader.Close(); }
public void GetFacesList() { //haar cascade classifier if (!File.Exists(Config.HaarCascadePath)) { string text = "Cannot find Haar cascade data file:\n\n"; text += Config.HaarCascadePath; MessageBoxResult result = MessageBox.Show(text, "Error", MessageBoxButton.OK, MessageBoxImage.Error); } haarCascade = new CascadeClassifier(Config.HaarCascadePath); faceList.Clear(); string line; FaceData faceInstance = null; // Create empty directory / file for face data if it doesn't exist if (!Directory.Exists(Config.FacePhotosPath)) { Directory.CreateDirectory(Config.FacePhotosPath); } if (!File.Exists(Config.FaceListTextFile)) { string text = "Cannot find face data file:\n\n"; text += Config.FaceListTextFile + "\n\n"; text += "If this is your first time running the app, an empty file will be created for you."; MessageBoxResult result = MessageBox.Show(text, "Warning", MessageBoxButton.OK, MessageBoxImage.Warning); switch (result) { case MessageBoxResult.OK: String dirName = Path.GetDirectoryName(Config.FaceListTextFile); Directory.CreateDirectory(dirName); File.Create(Config.FaceListTextFile).Close(); break; } } StreamReader reader = new StreamReader(Config.FaceListTextFile); int i = 0; while ((line = reader.ReadLine()) != null) { string[] lineParts = line.Split(':'); faceInstance = new FaceData(); faceInstance.FaceImage = new Image <Gray, byte>(Config.FacePhotosPath + lineParts[0] + Config.ImageFileExtension); faceInstance.PersonName = lineParts[1]; faceList.Add(faceInstance); } foreach (var face in faceList) { imageList.Push(face.FaceImage.Mat); nameList.Add(face.PersonName); labelList.Push(new[] { i++ }); } reader.Close(); // Train recogniser if (imageList.Size > 0) { recognizer = new EigenFaceRecognizer(imageList.Size); recognizer.Train(imageList, labelList); } }