예제 #1
0
        public bool SaveNewFace(string label, ref Image <Gray, Byte> detectedFace, CancellationToken token)
        {
            var trainedFacesTemp = new List <Image <Gray, byte> >();
            var faceLabelsTemp   = new List <String>();
            var faceIDTemp       = new List <int>();
            int faceCountTemp    = FaceCount;


            for (int i = 0; i < LibraryDataIO.Instance.PicturesPerUser && !token.IsCancellationRequested;)
            {
                if (detectedFace != null)
                {
                    trainedFacesTemp.Add(detectedFace);
                    faceLabelsTemp.Add(label);
                    faceIDTemp.Add(++faceCountTemp);
                    FacePhotoSaved?.Invoke(this, EventArgs.Empty);
                    i++;
                    Thread.Sleep(500);
                }
            }

            if (!token.IsCancellationRequested)
            {
                StoreNewFace(trainedFacesTemp, faceLabelsTemp, faceIDTemp, label);
                return(true);
            }
            return(false);
        }
예제 #2
0
 public FaceCamera(int camWidth, int camHeight, IFaceRecognition faceRecognition)
 {
     faceFrame            = Resources.FaceFrame;
     this.faceRecognition = faceRecognition;
     videoCapture         = new VideoCapture();
     camSize = new Size(camWidth, camHeight);
     faceRecognition.FacePhotoSaved += (object sender, EventArgs e) => FacePhotoSaved?.Invoke(sender, e);
     faceRecognition.LoadRecognizer();
 }