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); }
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; }