Ejemplo n.º 1
0
        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();
        }
Ejemplo n.º 2
0
        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);
            }
        }