public RecognitionSample(RecognitionCore core) { this.core = core; imageFile = ""; image = null; sampleResults = new List<RecognitionResult>(); }
public RecognitionSample(RecognitionCore core, string file) { this.core = core; imageFile = file; image = new Bitmap(file); sampleResults = new List<RecognitionResult>(); }
public RecognitionSample(RecognitionCore core) { this.core = core; imageFile = ""; image = null; sampleResults = new List <RecognitionResult>(); }
public RecognitionSample(RecognitionCore core, string file) { this.core = core; imageFile = file; image = new Bitmap(file); sampleResults = new List <RecognitionResult>(); }
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 void tsmiOptions_Click(object sender, EventArgs e) { var result = RecognitionOptions.Instance.ShowDialog(); Focus(); if (result == System.Windows.Forms.DialogResult.OK) { coreC = coreD = coreF = null; SampleC = SampleD = SampleF = null; workImage = null; lbOutput.Items.Add("Настройки изменены"); lbOutput.SelectedIndex = lbOutput.Items.Count - 1; } }
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; }
private void btnSelectSamples_Click(object sender, EventArgs e) { if (openImages.ShowDialog() == System.Windows.Forms.DialogResult.OK) { var index = cbTextureClass.SelectedIndex; teachingSamples[index].Clear(); teachingSamples[index].AddRange(openImages.FileNames); lbOutput.Items.Add("Добавлено " + teachingSamples[index].Count + " примеров в класс " + recognition.Core.GetTextureClass(index).Name); coreC = coreD = coreF = null; SampleC = SampleD = SampleF = null; workImage = null; } }
private TextureRecognition() { core = new RecognitionCore(); CurrentClass = null; }