Пример #1
0
        public TrainingForm(String _name)
        {
            InitializeComponent();

            name = _name;

            photoCounter = 3;

            capture = new Capture();
            CameraCapture.Init(capture);
            BlinkDetector.Init(new CascadeClassifier(eyePairClassifier), new CascadeClassifier(eyeClassifier));
            FaceDetection.Init(new CascadeClassifier(faceClassifier));
            TrainingStateManager.Clear();
            BlinkStateManager.Clear();

            labelInstruction.Text = "We will now capture a few images \nof your face";
            labelRemaining.Text   = photoCounter + " more capture to finish";
            buttonFinish.Enabled  = false;
            CameraCapture.Start();

            timer          = new DispatcherTimer();
            timer.Tick    += ProcessTrainFrame;
            timer.Interval = new TimeSpan(0, 0, 0, 0, 1);
            timer.Start();
        }
Пример #2
0
        private void PrintInstruction()
        {
            labelRemaining.Text = photoCounter + " more capture to finish";
            String instruction = "";

            switch (TrainingStateManager.State)
            {
            case TrainingStateManager.STATE.IDLE:
                instruction = "Idle";
                break;

            case TrainingStateManager.STATE.NOT_DETECTED:
                instruction = "Face NOT detected!";
                BlinkStateManager.Clear();
                break;

            case TrainingStateManager.STATE.READY:
                if (BlinkStateManager.IsReady)
                {
                    instruction = "Ready! Please BLINK your eyes.";
                }
                else
                {
                    instruction = "Looking for facial feature...";
                }
                break;

            case TrainingStateManager.STATE.FACE_NOT_STABLE:
                instruction = "Please stay still.";
                BlinkStateManager.Clear();
                break;

            case TrainingStateManager.STATE.TOO_DARK:
                instruction = "Too dark.";
                BlinkStateManager.Clear();
                break;

            case TrainingStateManager.STATE.TOO_BRIGHT:
                instruction = "Too bright.";
                BlinkStateManager.Clear();
                break;

            case TrainingStateManager.STATE.TOO_FAR:
                instruction = "Face too far.";
                break;

            case TrainingStateManager.STATE.TOO_CLOSE:
                instruction = "Face too close.";
                break;

            default:
                break;
            }
            labelInstruction.Text = instruction;
            return;
        }
Пример #3
0
        private void CheckBlink(Image <Gray, byte> faceImage)
        {
            //print method for debugging purpose
            PrintBlinkInformations();
            BlinkDetector.Detect(faceImage);
            if (BlinkStateManager.LastAction.Equals(BlinkStateManager.LAST_ACTION.BLINK))
            {
                if (FaceRecognition.SaveTrainingData(faceImage, name))
                {
                    BlinkStateManager.Clear();
                    photoCounter--;

                    if (photoCounter <= 0)
                    {
                        buttonFinish.Enabled = true;
                        photoCounter         = 0;
                    }
                }
            }
            return;
        }
Пример #4
0
        public SecurityForm()
        {
            InitializeComponent();

            username = Authorization.username;

            capture = new Capture();
            CameraCapture.Init(capture);
            BlinkDetector.Init(new CascadeClassifier(eyePairClassifier), new CascadeClassifier(eyeClassifier));
            FaceDetection.Init(new CascadeClassifier(faceClassifier));
            SecurityStateManager.Clear();
            BlinkStateManager.Clear();

            labelInstruction.Text = "We will now capture a few images \nof your face";

            CameraCapture.Start();

            timer          = new DispatcherTimer();
            timer.Tick    += ProcessSecurityFrame;
            timer.Interval = new TimeSpan(0, 0, 0, 0, 1);
            timer.Start();
        }
Пример #5
0
        private void PrintInstruction()
        {
            String instruction = "";

            switch (SecurityStateManager.State)
            {
            case SecurityStateManager.STATE.IDLE:
                instruction = "Idle";
                break;

            case SecurityStateManager.STATE.NOT_DETECTED:
                instruction = "Face NOT detected!";
                BlinkStateManager.Clear();
                break;

            case SecurityStateManager.STATE.NOT_MATCH:
                MessageBox.Show("Face doesn't match!");
                Thread thread = new Thread(new ThreadStart(RunLoginForm));
                thread.Start();
                this.Close();
                break;

            case SecurityStateManager.STATE.READY:
                if (BlinkStateManager.IsReady)
                {
                    instruction = "Ready! Please BLINK your eyes.";
                }
                else
                {
                    instruction = "Looking for facial feature...";
                }
                break;

            case SecurityStateManager.STATE.FACE_NOT_STABLE:
                instruction = "Please stay still.";
                BlinkStateManager.Clear();
                break;

            case SecurityStateManager.STATE.TOO_DARK:
                instruction = "Too dark.";
                BlinkStateManager.Clear();
                break;

            case SecurityStateManager.STATE.TOO_BRIGHT:
                instruction = "Too bright.";
                BlinkStateManager.Clear();
                break;

            case SecurityStateManager.STATE.TOO_FAR:
                instruction = "Face too far.";
                BlinkStateManager.Clear();
                break;

            case SecurityStateManager.STATE.TOO_CLOSE:
                instruction = "Face too close.";
                break;

            default:
                break;
            }
            labelInstruction.Text = instruction;

            return;
        }