Ejemplo n.º 1
0
 public KinectFaceTracker(FSDKFacePipeline facePipeline, IKinect kinect, CancellationTokenSource cts)
 {
     _kinect                  = kinect;
     FacePipeline             = facePipeline;
     _cancellationTokenSource = cts;
     _coordinateMapper        = _kinect.CoordinateMapper;
 }
 public static void InitializeLibrary()
 {
     while (true)
     {
         try
         {
             FSDKFacePipeline.InitializeLibrary();
             return;
         }
         catch (ApplicationException e)
         {
             var result = MessageBox.Show(e.Message + Environment.NewLine + "Do you wish to enter a new key?", "Face library activation failed!", MessageBoxButtons.YesNo);
             if (result == DialogResult.Yes)
             {
                 var inputKeyForm = new InputNameForm("FaceSDK Key", "Enter new FSDK key");
                 result = inputKeyForm.ShowDialog();
                 if (result == DialogResult.OK)
                 {
                     FsdkSettings.Default.FsdkActivationKey = inputKeyForm.UserName;
                     FsdkSettings.Default.Save();
                 }
             }
             else
             {
                 return;
             }
         }
     }
 }
Ejemplo n.º 3
0
        public FormMain()
        {
            var kinect = KinectInitializeHelper.InitializeKinect();

            if (kinect == null)
            {
                Environment.Exit(1);
            }

            InitializeComponent();

            var faceDatabase = new DictionaryFaceDatabase <byte[]>(new FSDKFaceInfo());

            _databaseHelper = new DatabaseHelper <byte[]>(faceDatabase);

            var cts          = new CancellationTokenSource();
            var facePipeline = new FSDKFacePipeline(faceDatabase, TaskScheduler.Default, cts.Token);

            if (KinectTrackedAppSettings.Default.RenderFace)
            {
                facePipeline.FaceCuttingComplete += FacePipelineOnFaceCuttingComplete;
            }

            if (FsdkSettings.Default.FsdkDetectFeatures || FsdkSettings.Default.FsdkDetectExpression)
            {
                facePipeline.FacialFeatureDetectionComplete += FacePipelineOnFeatureDetection;
            }

            if (KinectTrackedAppSettings.Default.RenderMatch)
            {
                facePipeline.TemplateProcessingComplete += FacePipelineOnTemplateProcessingComplete;
            }

            FsdkInitializeHelper.InitializeLibrary();

            _kinectFrameWidth  = kinect.ColorFrameStream.FrameHeight;
            _kinectFrameHeight = kinect.ColorFrameStream.FrameWidth;
            _coordinateMapper  = kinect.CoordinateMapper;
            _kft = new KinectFaceTracker(facePipeline, kinect, cts);
            _kft.FrameArrived += KftOnFrameArrived;

            _kft.FacePipeline.FacialFeatureDetectionComplete += FacePipelineOnFeatureDetection;
            _kft.Start();

            _imageHeight = mainPictureBox.Height;
            _imageWidth  = mainPictureBox.Width;

            startStopToolStripMenuItem.Text =
                _programState == ProgramState.Running ? "Stop (Space)" : "Start (Space)";

            _renderer = new Renderer(_kinectFrameHeight, _kinectFrameWidth);
        }