Example #1
0
        static void Main(string[] args)
        {
            TestService testService = new TestService();
            testService.ServiceEventFired += s =>
            {
                Console.WriteLine("SERVICE: {0}", s);
            };

            RecognitionCore core = new RecognitionCore("E:\\Nox\\plugins");
            core.LoadCommandSet(new TestServiceCommandSet());
            core.AddService<ISpeechSynthesizer>(new NoxSpeechSynthesizer());
            core.AddService<TestService>(testService);

            core.Start();

            Console.WriteLine("Press Enter to Exit");
            Console.ReadLine();
            core.Stop();
        }
Example #2
0
 public void Setup()
 {
     _recognitionEngine = new SpeechRecognitionEngine();
     _recognitionCore = new RecognitionCore("plugins", _recognitionEngine);
 }
        private void AutoThread(object param)
        {
            if (Samples == null)
            {
                return;
            }

            for (int i = 0; i < Samples.Count; ++i)
            {
                SelectSample(Samples[i]);
                complete = false;
                this.BeginInvoke(
                    new Action(delegate()
                {
                    btnFull_Click(null, null);
                }));
                while (!complete)
                {
                    Thread.Sleep(200);
                }
            }

            var factor = 0.15;

            for (int j = 0; j < 8; ++j)
            {
                coreC = coreD = coreF = null;
                RecognitionParameters.CompactFactor   = factor;
                RecognitionParameters.DischargeFactor = factor;
                complete = true;
                for (int i = 0; i < Samples.Count; ++i)
                {
                    SelectSample(Samples[i]);

                    complete = false;
                    this.BeginInvoke(
                        new Action(delegate()
                    {
                        btnCompact_Click(null, null);
                    }));
                    while (!complete)
                    {
                        Thread.Sleep(200);
                    }

                    complete = false;
                    this.BeginInvoke(
                        new Action(delegate()
                    {
                        btnDischarged_Click(null, null);
                    }));
                    while (!complete)
                    {
                        Thread.Sleep(200);
                    }

                    /*complete = false;
                     * this.BeginInvoke(
                     * new Action(delegate()
                     * {
                     *     btnFull_Click(null, null);
                     * }));
                     * while (!complete)
                     * {
                     *  Thread.Sleep(200);
                     * }*/
                }

                factor += 0.05;
            }
            this.BeginInvoke(
                new Action(delegate()
            {
                btnAuto.Enabled = true;
            }));
        }
 private TextureRecognition()
 {
     core         = new RecognitionCore();
     CurrentClass = null;
 }
        private void RecognizeThread(object param)
        {
            var id = (int)param;

            RecognitionCore   core          = null;
            RecognitionSample currentSample = null;
            Bitmap            currentImage  = null;
            string            pref          = "";

            switch (id)
            {
            case 1:
                pref          = "    (Полная выборка)";
                core          = coreF;
                currentSample = SampleF;
                currentImage  = workImage;
                break;

            case 2:
                pref          = "    (Компактная выборка)";
                core          = coreC;
                currentSample = SampleC;
                currentImage  = workImage;
                break;

            case 3:
                pref          = "    (Разряженная выборка)";
                core          = coreD;
                currentSample = SampleD;
                currentImage  = workImage;
                break;

            default:
                break;
            }

            if (core == null)
            {
                core = new RecognitionCore();
                for (int i = 0; i < recognition.Core.TextureClassCount; ++i)
                {
                    var their = recognition.Core.GetTextureClass(i);
                    core.AddTextureClass(their.Name, their.RegionColor);
                }

                for (int i = 0; i < core.TextureClassCount; ++i)
                {
                    var currentClass = core.GetTextureClass(i);

                    this.BeginInvoke(
                        new Action(delegate()
                    {
                        lbOutput.Items.Add("Начато обучение классу " + currentClass.Name);
                        lbOutput.SelectedIndex = lbOutput.Items.Count - 1;
                    }));

                    switch (id)
                    {
                    case 1:
                        currentClass.Teach(teachingSamples[i], GetImagesToTeach(teachingSamples[i]));
                        break;

                    case 2:
                        currentClass.TeachCompact(teachingSamples[i], GetImagesToTeach(teachingSamples[i]));
                        break;

                    case 3:
                        currentClass.TeachDischarged(teachingSamples[i], GetImagesToTeach(teachingSamples[i]));
                        break;

                    default:
                        currentClass.Teach(teachingSamples[i], GetImagesToTeach(teachingSamples[i]));
                        break;
                    }
                    while (currentClass.IsTeaching)
                    {
                        Thread.Sleep(200);
                    }

                    var result = this.BeginInvoke(
                        new Action(delegate()
                    {
                        var count = currentClass.KnownSamplesNumber(TextureFeatures.GLCM);
                        var part  = count / (float)teachingSamples[i].Count;
                        lbOutput.Items.Add("    После обучения получено образцов GLCM: " +
                                           count.ToString() + " (" + part.ToString() + ")");

                        count = currentClass.KnownSamplesNumber(TextureFeatures.LBP);
                        part  = count / (float)teachingSamples[i].Count;
                        lbOutput.Items.Add("    После обучения получено образцов LBP: " +
                                           count.ToString() + " (" + part.ToString() + ")");

                        lbOutput.SelectedIndex = lbOutput.Items.Count - 1;
                    }));
                    while (!result.IsCompleted)
                    {
                        Thread.Sleep(50);
                    }
                }
            }

            switch (id)
            {
            case 1:
                coreF = core;
                break;

            case 2:
                coreC = core;
                break;

            case 3:
                coreD = core;
                break;

            default:
                break;
            }


            if (currentSample == null)
            {
                this.BeginInvoke(
                    new Action(delegate()
                {
                    lbOutput.Items.Add("Начато распознавание тестового изображения");
                    lbOutput.SelectedIndex = lbOutput.Items.Count - 1;
                }));

                currentSample = new RecognitionSample(core, sample.Path);
                currentSample.Recognize();
                currentImage = currentSample.GetSampleImage();
                switch (id)
                {
                case 1:
                    SampleF   = currentSample;
                    workImage = currentImage;
                    break;

                case 2:
                    SampleC   = currentSample;
                    workImage = currentImage;
                    break;

                case 3:
                    SampleD   = currentSample;
                    workImage = currentImage;
                    break;

                default:
                    break;
                }
            }

            var iRes = this.BeginInvoke(
                new Action(delegate()
            {
                lbOutput.Items.Add(currentSample.Path);
                var result = sample.CompareFeature(currentSample, TextureFeatures.GLCM);
                lbOutput.Items.Add(pref + " Соответствие GLCM = " + result.ToString());
                result = sample.CompareFeature(currentSample, TextureFeatures.LBP);
                lbOutput.Items.Add(pref + " Соответствие LBP = " + result.ToString());
                lbOutput.SelectedIndex = lbOutput.Items.Count - 1;

                pbWork.Image = currentImage;

                msMenu.Enabled           = true;
                btnSelectSample.Enabled  = true;
                btnSelectSamples.Enabled = true;
                cbTextureClass.Enabled   = true;
                btnCompact.Enabled       = true;
                btnDischarged.Enabled    = true;
                btnFull.Enabled          = true;
            }));

            while (!iRes.IsCompleted)
            {
                Thread.Sleep(20);
            }

            complete = true;
        }