예제 #1
0
        private void Classify()
        {
            if (this.classifier == null || this.classifier.HasUpdates /* update flag */)
            {
                this.classifier                   = new GestureClassifier();
                this.classifier.ProblemFile       = this.featureFilePath;
                this.classifier.ModelFile         = this.modelFilePath;
                this.classifier.CategoryDetected += classifier_CategoryDetected;
                GestureStudio.DisplayLoadingWindow("Loading Image Classifier...");
                this.classifier.BeginInitialize(() =>
                {
                    GestureStudio.HideLoadingWindow();
                });
            }

            if (this.classifier.Initialized)
            {
                this.UpdateStatus("Classifying");
                this.classifier.ClassifyImage(this.croppedFrame);
            }
            else
            {
                this.UpdateStatus("Loading Classifier...");
            }
        }
예제 #2
0
        private void Train()
        {
            if (this.trainer == null)
            {
                this.trainer             = new GestureLearner();
                this.trainer.ProblemFile = this.featureFilePath;

                this.trainer.ImageCollectionFinished += trainer_ImageCollectionFinished;
                this.trainer.NewModelReady           += trainer_NewModelReady;
                GestureStudio.DisplayLoadingWindow("Loading Gesture Trainer...");
                this.trainer.BeginInitialize(() =>
                {
                    GestureStudio.HideLoadingWindow();
                });
            }
            else if (this.trainer.CurrentSampleCount == 0)
            {
            }

            if (this.trainer.Initialized)
            {
                if (!this.trainer.GestureDataReady)
                {
                    this.UpdateStatus("Collecting Gesture " + this.trainer.CurrentSampleCount + " of 30");
                    this.trainer.LearnGesture(this.croppedFrame);
                }
                else if (!this.trainer.ModelBuildStarted)
                {
                    this.UpdateStatus("Building Prediction Model...");

                    GestureStudio.DisplayLoadingWindow("Building Prediction Model...");
                    this.trainer.BuildModel(() =>
                    {
                        GestureStudio.HideLoadingWindow();
                    });
                }
                else
                {
                    // training finished
                    this.Stop();
                }
            }
            else
            {
                // waiting for init, do nothing
            }
        }
예제 #3
0
        public void BeginInitialize()
        {
            this.floodFill       = new FloodFill();
            this.mode            = ProgramMode.Idle;
            this.classifier      = null;
            this.trainer         = null;
            this.featureFilePath = null;
            this.modelFilePath   = null;

            GestureStudio.DisplayLoadingWindow("Loading Kinect Sensor...");
            ThreadPool.QueueUserWorkItem((state) =>
            {
                // init kinect
                this.StartKinectSensor();
                GestureStudio.HideLoadingWindow();
                this.UpdateStatus("Ready");
            });
        }