public void SetAnswer(Point position, string answer)
        {
            var fragments = GetPossibleFragments(position);

            foreach (var fragment in fragments)
            {
                var sampleAnswer = GetAnswer(fragment);
                if (sampleAnswer == null)
                {
                    sampleAnswer        = new RecognitionResult();
                    sampleAnswer.Region = fragment;
                    sampleResults.Add(sampleAnswer);
                }
                var textureClass = core.GetTextureClass(answer);
                sampleAnswer.SetAnswer(TextureFeatures.GLCM, textureClass);
                sampleAnswer.SetAnswer(TextureFeatures.LBP, textureClass);
            }
        }
        public void LoadSample(string path)
        {
            sampleResults.Clear();

            var xml = new XmlDocument();

            xml.Load(path);
            var results = xml.GetElementsByTagName("sample");

            imageFile = results[0].Attributes["imageFile"].Value;
            results   = xml.GetElementsByTagName("RecognitionResult");
            foreach (XmlNode item in results)
            {
                var result = new RecognitionResult();
                result.Load(item, core.GetTextureClass);
                sampleResults.Add(result);
            }

            image = new Bitmap(imageFile);
        }
Example #3
0
 public bool CompareAnswers(RecognitionResult other, TextureFeatures feature)
 {
     if (other != null)
     {
         var otherAnswer = other[feature].Name;
         if (otherAnswer != null)
         {
             return otherAnswer == this[feature].Name;
         }
     }
     return false;
 }
 public void SetAnswer(Point position, string answer)
 {
     var fragments = GetPossibleFragments(position);
     foreach (var fragment in fragments)
     {
         var sampleAnswer = GetAnswer(fragment);
         if (sampleAnswer == null)
         {
             sampleAnswer = new RecognitionResult();
             sampleAnswer.Region = fragment;
             sampleResults.Add(sampleAnswer);
         }
         var textureClass = core.GetTextureClass(answer);
         sampleAnswer.SetAnswer(TextureFeatures.GLCM, textureClass);
         sampleAnswer.SetAnswer(TextureFeatures.LBP, textureClass);
     }
 }
        public void LoadSample(string path)
        {
            sampleResults.Clear();

            var xml = new XmlDocument();
            xml.Load(path);
            var results = xml.GetElementsByTagName("sample");
            imageFile = results[0].Attributes["imageFile"].Value;
            results = xml.GetElementsByTagName("RecognitionResult");
            foreach (XmlNode item in results)
            {
                var result = new RecognitionResult();
                result.Load(item, core.GetTextureClass);
                sampleResults.Add(result);
            }

            image = new Bitmap(imageFile);
        }
        private void btnRecognize_Click(object sender, EventArgs e)
        {
            if (sourceImage == null)
            {
                MessageBox.Show("Выберете сначала изображение.");
                return;
            }

            if (isRecognized)
            {
                UpdateRecognizedImage();
                UpdateImages();
                return;
            }

            if ((sourceImage.Width < RecognitionParameters.RecognitionFragmentSize) ||
                (sourceImage.Height < RecognitionParameters.RecognitionFragmentSize))
            {
                MessageBox.Show("Изображние слишком мало - невозможно разбить на фрагменты.\n" +
                    "Выберете другое изображение или размер фрагмента.");
                return;
            }

            if (recognition.Core.TextureClassCount < 1)
            {
                MessageBox.Show("Неизвестно ни одного класса. Сначала проведите обучение.");
                return;
            }

            if (rbRegion.Checked && !isSelected)
            {
                MessageBox.Show("Не выделена область на изображении. Сначала выделите область.");
                return;
            }

            btnRecognize.Enabled = false;
            btnSelectImage.Enabled = false;
            panelParameters.Enabled = false;
            tsmiBatchProcessing.Enabled = false;
            tsmiOptions.Enabled = false;
            tsmiSaveResult.Enabled = false;
            tsmiBack.Enabled = false;
            tsmiClose.Enabled = false;
            pbProgress.Value = 0;

            answer = null;
            answers = null;
            ThreadPool.QueueUserWorkItem(new WaitCallback(RecognizeProcess));
            ThreadPool.QueueUserWorkItem(new WaitCallback(RecognizeControl));
        }
 private void RecognizeProcess(object parameter)
 {
     if (rbRegion.Checked || rbAllImage.Checked)
     {
         Rectangle region = selectedRegion;
         if (rbAllImage.Checked)
         {
             region = new Rectangle(0, 0, sourceImage.Width, sourceImage.Height);
         }
         answer = recognition.Core.RecognizeImage(sourceImage, region);
     }
     else
     {
         answers = recognition.Core.RecognizeImage(sourceImage);
     }
     this.BeginInvoke(
         new Action(delegate()
             {
                 UpdateRecognizedImage();
                 UpdateImages();
             }));
 }
 private RecognitionResult GetBestMatch(TextureSample sample, Rectangle region)
 {
     var answer = new RecognitionResult(region, sample);
     answer.SetAnswer(TextureFeatures.GLCM, GetBestMatchForFeature(sample, TextureFeatures.GLCM));
     answer.SetAnswer(TextureFeatures.LBP, GetBestMatchForFeature(sample, TextureFeatures.LBP));
     return answer;
 }