BackWorkers, photo folder
This commit is contained in:
		
							parent
							
								
									57ddf2a2d9
								
							
						
					
					
						commit
						185d221eab
					
				@ -8,13 +8,19 @@ EndProject
 | 
				
			|||||||
Global
 | 
					Global
 | 
				
			||||||
	GlobalSection(SolutionConfigurationPlatforms) = preSolution
 | 
						GlobalSection(SolutionConfigurationPlatforms) = preSolution
 | 
				
			||||||
		Debug|Any CPU = Debug|Any CPU
 | 
							Debug|Any CPU = Debug|Any CPU
 | 
				
			||||||
 | 
							Debug|x64 = Debug|x64
 | 
				
			||||||
		Release|Any CPU = Release|Any CPU
 | 
							Release|Any CPU = Release|Any CPU
 | 
				
			||||||
 | 
							Release|x64 = Release|x64
 | 
				
			||||||
	EndGlobalSection
 | 
						EndGlobalSection
 | 
				
			||||||
	GlobalSection(ProjectConfigurationPlatforms) = postSolution
 | 
						GlobalSection(ProjectConfigurationPlatforms) = postSolution
 | 
				
			||||||
		{AFE13E01-F592-4F23-B76C-1D2D33D475FD}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
 | 
							{AFE13E01-F592-4F23-B76C-1D2D33D475FD}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
 | 
				
			||||||
		{AFE13E01-F592-4F23-B76C-1D2D33D475FD}.Debug|Any CPU.Build.0 = Debug|Any CPU
 | 
							{AFE13E01-F592-4F23-B76C-1D2D33D475FD}.Debug|Any CPU.Build.0 = Debug|Any CPU
 | 
				
			||||||
 | 
							{AFE13E01-F592-4F23-B76C-1D2D33D475FD}.Debug|x64.ActiveCfg = Debug|x64
 | 
				
			||||||
 | 
							{AFE13E01-F592-4F23-B76C-1D2D33D475FD}.Debug|x64.Build.0 = Debug|x64
 | 
				
			||||||
		{AFE13E01-F592-4F23-B76C-1D2D33D475FD}.Release|Any CPU.ActiveCfg = Release|Any CPU
 | 
							{AFE13E01-F592-4F23-B76C-1D2D33D475FD}.Release|Any CPU.ActiveCfg = Release|Any CPU
 | 
				
			||||||
		{AFE13E01-F592-4F23-B76C-1D2D33D475FD}.Release|Any CPU.Build.0 = Release|Any CPU
 | 
							{AFE13E01-F592-4F23-B76C-1D2D33D475FD}.Release|Any CPU.Build.0 = Release|Any CPU
 | 
				
			||||||
 | 
							{AFE13E01-F592-4F23-B76C-1D2D33D475FD}.Release|x64.ActiveCfg = Release|x64
 | 
				
			||||||
 | 
							{AFE13E01-F592-4F23-B76C-1D2D33D475FD}.Release|x64.Build.0 = Release|x64
 | 
				
			||||||
	EndGlobalSection
 | 
						EndGlobalSection
 | 
				
			||||||
	GlobalSection(SolutionProperties) = preSolution
 | 
						GlobalSection(SolutionProperties) = preSolution
 | 
				
			||||||
		HideSolutionNode = FALSE
 | 
							HideSolutionNode = FALSE
 | 
				
			||||||
 | 
				
			|||||||
@ -34,6 +34,26 @@
 | 
				
			|||||||
    <ErrorReport>prompt</ErrorReport>
 | 
					    <ErrorReport>prompt</ErrorReport>
 | 
				
			||||||
    <WarningLevel>4</WarningLevel>
 | 
					    <WarningLevel>4</WarningLevel>
 | 
				
			||||||
  </PropertyGroup>
 | 
					  </PropertyGroup>
 | 
				
			||||||
 | 
					  <PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Debug|x64'">
 | 
				
			||||||
 | 
					    <DebugSymbols>true</DebugSymbols>
 | 
				
			||||||
 | 
					    <OutputPath>bin\x64\Debug\</OutputPath>
 | 
				
			||||||
 | 
					    <DefineConstants>DEBUG;TRACE</DefineConstants>
 | 
				
			||||||
 | 
					    <DebugType>full</DebugType>
 | 
				
			||||||
 | 
					    <PlatformTarget>x64</PlatformTarget>
 | 
				
			||||||
 | 
					    <ErrorReport>prompt</ErrorReport>
 | 
				
			||||||
 | 
					    <CodeAnalysisRuleSet>MinimumRecommendedRules.ruleset</CodeAnalysisRuleSet>
 | 
				
			||||||
 | 
					    <Prefer32Bit>true</Prefer32Bit>
 | 
				
			||||||
 | 
					  </PropertyGroup>
 | 
				
			||||||
 | 
					  <PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Release|x64'">
 | 
				
			||||||
 | 
					    <OutputPath>bin\x64\Release\</OutputPath>
 | 
				
			||||||
 | 
					    <DefineConstants>TRACE</DefineConstants>
 | 
				
			||||||
 | 
					    <Optimize>true</Optimize>
 | 
				
			||||||
 | 
					    <DebugType>pdbonly</DebugType>
 | 
				
			||||||
 | 
					    <PlatformTarget>x64</PlatformTarget>
 | 
				
			||||||
 | 
					    <ErrorReport>prompt</ErrorReport>
 | 
				
			||||||
 | 
					    <CodeAnalysisRuleSet>MinimumRecommendedRules.ruleset</CodeAnalysisRuleSet>
 | 
				
			||||||
 | 
					    <Prefer32Bit>true</Prefer32Bit>
 | 
				
			||||||
 | 
					  </PropertyGroup>
 | 
				
			||||||
  <ItemGroup>
 | 
					  <ItemGroup>
 | 
				
			||||||
    <Reference Include="Emgu.CV.UI, Version=3.4.1.2976, Culture=neutral, processorArchitecture=MSIL">
 | 
					    <Reference Include="Emgu.CV.UI, Version=3.4.1.2976, Culture=neutral, processorArchitecture=MSIL">
 | 
				
			||||||
      <HintPath>..\packages\EMGU.CV.3.4.1.2976\lib\net35\Emgu.CV.UI.dll</HintPath>
 | 
					      <HintPath>..\packages\EMGU.CV.3.4.1.2976\lib\net35\Emgu.CV.UI.dll</HintPath>
 | 
				
			||||||
 | 
				
			|||||||
							
								
								
									
										17
									
								
								FaceRecognizer/MainForm.Designer.cs
									
									
									
										generated
									
									
									
								
							
							
						
						
									
										17
									
								
								FaceRecognizer/MainForm.Designer.cs
									
									
									
										generated
									
									
									
								
							@ -34,6 +34,8 @@
 | 
				
			|||||||
            this.TrainBtn = new System.Windows.Forms.Button();
 | 
					            this.TrainBtn = new System.Windows.Forms.Button();
 | 
				
			||||||
            this.nameTxtBx = new System.Windows.Forms.TextBox();
 | 
					            this.nameTxtBx = new System.Windows.Forms.TextBox();
 | 
				
			||||||
            this.RecconizeBtn = new System.Windows.Forms.Button();
 | 
					            this.RecconizeBtn = new System.Windows.Forms.Button();
 | 
				
			||||||
 | 
					            this.trainBackWorker = new System.ComponentModel.BackgroundWorker();
 | 
				
			||||||
 | 
					            this.recognizeBackWorker = new System.ComponentModel.BackgroundWorker();
 | 
				
			||||||
            ((System.ComponentModel.ISupportInitialize)(this.pictureBox1)).BeginInit();
 | 
					            ((System.ComponentModel.ISupportInitialize)(this.pictureBox1)).BeginInit();
 | 
				
			||||||
            ((System.ComponentModel.ISupportInitialize)(this.pictureBox2)).BeginInit();
 | 
					            ((System.ComponentModel.ISupportInitialize)(this.pictureBox2)).BeginInit();
 | 
				
			||||||
            this.SuspendLayout();
 | 
					            this.SuspendLayout();
 | 
				
			||||||
@ -54,6 +56,7 @@
 | 
				
			|||||||
            // 
 | 
					            // 
 | 
				
			||||||
            // pictureBox1
 | 
					            // pictureBox1
 | 
				
			||||||
            // 
 | 
					            // 
 | 
				
			||||||
 | 
					            this.pictureBox1.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle;
 | 
				
			||||||
            this.pictureBox1.Location = new System.Drawing.Point(464, 12);
 | 
					            this.pictureBox1.Location = new System.Drawing.Point(464, 12);
 | 
				
			||||||
            this.pictureBox1.Name = "pictureBox1";
 | 
					            this.pictureBox1.Name = "pictureBox1";
 | 
				
			||||||
            this.pictureBox1.Size = new System.Drawing.Size(324, 300);
 | 
					            this.pictureBox1.Size = new System.Drawing.Size(324, 300);
 | 
				
			||||||
@ -63,6 +66,7 @@
 | 
				
			|||||||
            // 
 | 
					            // 
 | 
				
			||||||
            // pictureBox2
 | 
					            // pictureBox2
 | 
				
			||||||
            // 
 | 
					            // 
 | 
				
			||||||
 | 
					            this.pictureBox2.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle;
 | 
				
			||||||
            this.pictureBox2.Location = new System.Drawing.Point(12, 12);
 | 
					            this.pictureBox2.Location = new System.Drawing.Point(12, 12);
 | 
				
			||||||
            this.pictureBox2.Name = "pictureBox2";
 | 
					            this.pictureBox2.Name = "pictureBox2";
 | 
				
			||||||
            this.pictureBox2.Size = new System.Drawing.Size(324, 300);
 | 
					            this.pictureBox2.Size = new System.Drawing.Size(324, 300);
 | 
				
			||||||
@ -96,6 +100,17 @@
 | 
				
			|||||||
            this.RecconizeBtn.UseVisualStyleBackColor = true;
 | 
					            this.RecconizeBtn.UseVisualStyleBackColor = true;
 | 
				
			||||||
            this.RecconizeBtn.Click += new System.EventHandler(this.RecconizeBtn_Click);
 | 
					            this.RecconizeBtn.Click += new System.EventHandler(this.RecconizeBtn_Click);
 | 
				
			||||||
            // 
 | 
					            // 
 | 
				
			||||||
 | 
					            // trainBackWorker
 | 
				
			||||||
 | 
					            // 
 | 
				
			||||||
 | 
					            this.trainBackWorker.WorkerReportsProgress = true;
 | 
				
			||||||
 | 
					            this.trainBackWorker.DoWork += new System.ComponentModel.DoWorkEventHandler(this.trainBackWorker_DoWork);
 | 
				
			||||||
 | 
					            this.trainBackWorker.RunWorkerCompleted += new System.ComponentModel.RunWorkerCompletedEventHandler(this.trainBackWorker_RunWorkerCompleted);
 | 
				
			||||||
 | 
					            // 
 | 
				
			||||||
 | 
					            // recognizeBackWorker
 | 
				
			||||||
 | 
					            // 
 | 
				
			||||||
 | 
					            this.recognizeBackWorker.DoWork += new System.ComponentModel.DoWorkEventHandler(this.recognizeBackWorker_DoWork);
 | 
				
			||||||
 | 
					            this.recognizeBackWorker.RunWorkerCompleted += new System.ComponentModel.RunWorkerCompletedEventHandler(this.recognizeBackWorker_RunWorkerCompleted);
 | 
				
			||||||
 | 
					            // 
 | 
				
			||||||
            // MainForm
 | 
					            // MainForm
 | 
				
			||||||
            // 
 | 
					            // 
 | 
				
			||||||
            this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
 | 
					            this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
 | 
				
			||||||
@ -124,6 +139,8 @@
 | 
				
			|||||||
        private System.Windows.Forms.Button TrainBtn;
 | 
					        private System.Windows.Forms.Button TrainBtn;
 | 
				
			||||||
        private System.Windows.Forms.TextBox nameTxtBx;
 | 
					        private System.Windows.Forms.TextBox nameTxtBx;
 | 
				
			||||||
        private System.Windows.Forms.Button RecconizeBtn;
 | 
					        private System.Windows.Forms.Button RecconizeBtn;
 | 
				
			||||||
 | 
					        private System.ComponentModel.BackgroundWorker trainBackWorker;
 | 
				
			||||||
 | 
					        private System.ComponentModel.BackgroundWorker recognizeBackWorker;
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
				
			|||||||
@ -26,8 +26,11 @@ namespace FaceRecognizer
 | 
				
			|||||||
        List<Image<Gray, byte>> imageList = new List<Image<Gray, byte>>();
 | 
					        List<Image<Gray, byte>> imageList = new List<Image<Gray, byte>>();
 | 
				
			||||||
        List<string> imageLabels = new List<string>();
 | 
					        List<string> imageLabels = new List<string>();
 | 
				
			||||||
        List<int> imageIndicies = new List<int>();
 | 
					        List<int> imageIndicies = new List<int>();
 | 
				
			||||||
 | 
					        List<int> predictions = new List<int>();
 | 
				
			||||||
        Rectangle[] detectedFaces;
 | 
					        Rectangle[] detectedFaces;
 | 
				
			||||||
        string trainImagesFolder = Application.StartupPath + "\\Train";
 | 
					        string trainImagesFolder = Application.StartupPath + "\\Train";
 | 
				
			||||||
 | 
					        string reconizeImagesFolder = Application.StartupPath + "\\photo";
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        public MainForm()
 | 
					        public MainForm()
 | 
				
			||||||
        {
 | 
					        {
 | 
				
			||||||
@ -39,29 +42,22 @@ namespace FaceRecognizer
 | 
				
			|||||||
        {            
 | 
					        {            
 | 
				
			||||||
            faceCascade = new CascadeClassifier("haarcascade_frontalface_alt_tree.xml");
 | 
					            faceCascade = new CascadeClassifier("haarcascade_frontalface_alt_tree.xml");
 | 
				
			||||||
            reconizer = new LBPHFaceRecognizer();
 | 
					            reconizer = new LBPHFaceRecognizer();
 | 
				
			||||||
 | 
					            int j = 0;
 | 
				
			||||||
            foreach (var file in Directory.GetFiles(trainImagesFolder))
 | 
					            foreach (var file in Directory.GetFiles(trainImagesFolder))
 | 
				
			||||||
            {                
 | 
					            {                
 | 
				
			||||||
                if (file.EndsWith("jpg"))
 | 
					                if (file.EndsWith("jpg"))
 | 
				
			||||||
                {
 | 
					                {
 | 
				
			||||||
                    console.AppendText("found: " + Path.GetFileNameWithoutExtension(file));
 | 
					 | 
				
			||||||
                    temp = new Image<Gray, byte>(file);
 | 
					                    temp = new Image<Gray, byte>(file);
 | 
				
			||||||
                    console.AppendText("loaded: " + Path.GetFileNameWithoutExtension(file));
 | 
					 | 
				
			||||||
                    temp._EqualizeHist();
 | 
					                    temp._EqualizeHist();
 | 
				
			||||||
 | 
					                    var detected_faces = faceCascade.DetectMultiScale(temp, 1.1, 2, new Size(24, 24), Size.Empty);
 | 
				
			||||||
                    var detected_faces = faceCascade.DetectMultiScale(temp
 | 
					                    if (detected_faces.Length == 0) { continue; }
 | 
				
			||||||
                        , 1.1
 | 
					 | 
				
			||||||
                        , 3
 | 
					 | 
				
			||||||
                        , new Size(24, 24)
 | 
					 | 
				
			||||||
                        , Size.Empty);
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
                    if (detected_faces.Length == 0) { console.AppendText("lenght zero"); continue; }
 | 
					 | 
				
			||||||
                    temp.ROI = detected_faces[0];                        
 | 
					                    temp.ROI = detected_faces[0];                        
 | 
				
			||||||
                    temp = temp.Copy();
 | 
					                    temp = temp.Copy();
 | 
				
			||||||
                    temp = temp.Resize(100, 100, Inter.Cubic);
 | 
					                    temp = temp.Resize(24, 24, Inter.Cubic);
 | 
				
			||||||
                    imageList.Add(temp);
 | 
					                    imageList.Add(temp);
 | 
				
			||||||
                    imageLabels.Add(Path.GetFileNameWithoutExtension(file));
 | 
					                    imageLabels.Add(Path.GetFileNameWithoutExtension(file));
 | 
				
			||||||
                }
 | 
					                }
 | 
				
			||||||
 | 
					                j++;
 | 
				
			||||||
            }
 | 
					            }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
            for (int i = 0; i < imageList.Count; i++)
 | 
					            for (int i = 0; i < imageList.Count; i++)
 | 
				
			||||||
@ -73,52 +69,95 @@ namespace FaceRecognizer
 | 
				
			|||||||
            {
 | 
					            {
 | 
				
			||||||
                reconizer.Train(imageList.ToArray(), imageIndicies.ToArray());
 | 
					                reconizer.Train(imageList.ToArray(), imageIndicies.ToArray());
 | 
				
			||||||
                reconizer.Write(personName);
 | 
					                reconizer.Write(personName);
 | 
				
			||||||
                console.AppendText("Training done!\nFile Name: " + personName);
 | 
					                //console.AppendText("Training done!\nFile Name: " + personName);                
 | 
				
			||||||
 | 
					                reconizer.Dispose();
 | 
				
			||||||
 | 
					                imageList.Clear();
 | 
				
			||||||
 | 
					                faceCascade.Dispose();
 | 
				
			||||||
 | 
					                temp.Dispose();
 | 
				
			||||||
            }
 | 
					            }
 | 
				
			||||||
            catch (Exception e) { console.AppendText("Error: " + e.Message); }                            
 | 
					            catch (Exception e) { } //console.AppendText("Error: " + e.Message); }                            
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        void recognize(string personName)
 | 
					        void recognize(string personName)
 | 
				
			||||||
        {
 | 
					        {
 | 
				
			||||||
            console.AppendText("Recognizing " + personName + "from local photos");
 | 
					            int i = 0;
 | 
				
			||||||
            try
 | 
					            try
 | 
				
			||||||
            {
 | 
					            {
 | 
				
			||||||
                reconizer = new LBPHFaceRecognizer(1, 8, 8, 9, 65);
 | 
					                //reconizer = new LBPHFaceRecognizer(1, 8, 8, 9, 65);
 | 
				
			||||||
                reconizer = new LBPHFaceRecognizer();
 | 
					                reconizer = new LBPHFaceRecognizer();
 | 
				
			||||||
 | 
					                faceCascade = new CascadeClassifier("haarcascade_frontalface_alt_tree.xml");
 | 
				
			||||||
 | 
					                predictions.Clear();
 | 
				
			||||||
 | 
					                //reconizer = new LBPHFaceRecognizer();
 | 
				
			||||||
                reconizer.Read(personName);
 | 
					                reconizer.Read(personName);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
                foreach (var file in Directory.GetFiles(trainImagesFolder))
 | 
					                foreach (var file in Directory.GetFiles(reconizeImagesFolder))
 | 
				
			||||||
                {
 | 
					                {
 | 
				
			||||||
                    if (file.EndsWith("jpg"))
 | 
					                    if (file.EndsWith("jpg"))
 | 
				
			||||||
                    {
 | 
					                    {
 | 
				
			||||||
                        Image<Gray, byte> temp2 = new Image<Gray, byte>(file);
 | 
					                        temp = new Image<Gray, byte>(file);
 | 
				
			||||||
                        pictureBox1.Image = temp2.Resize(pictureBox1.Width, pictureBox1.Height, Inter.Cubic).ToBitmap();
 | 
					                        temp._EqualizeHist();
 | 
				
			||||||
                        var result = reconizer.Predict(temp2);
 | 
					                        
 | 
				
			||||||
                        console.AppendText(">>result:" + result.Label.ToString());
 | 
					                        var faces = faceCascade.DetectMultiScale(temp, 1.1, 2, new Size(24, 24), Size.Empty);
 | 
				
			||||||
 | 
					                        if (faces.Length == 0) { continue; }
 | 
				
			||||||
 | 
					                        temp.ROI = faces[0];
 | 
				
			||||||
 | 
					                        temp = temp.Copy();
 | 
				
			||||||
 | 
					                        temp.Resize(24, 24, Inter.Cubic);
 | 
				
			||||||
 | 
					                        temp.ToBitmap().Save(reconizeImagesFolder + "\\" + i + ".jpg");
 | 
				
			||||||
 | 
					                        var result = reconizer.Predict(temp);
 | 
				
			||||||
 | 
					                        predictions.Add(result.Label);
 | 
				
			||||||
 | 
					                    }
 | 
				
			||||||
 | 
					                    i++;
 | 
				
			||||||
                }
 | 
					                }
 | 
				
			||||||
            }
 | 
					            }
 | 
				
			||||||
            }
 | 
					            catch (Exception e){ throw e; }
 | 
				
			||||||
            catch (Exception e)
 | 
					 | 
				
			||||||
            {
 | 
					 | 
				
			||||||
                console.AppendText("Error: " + e.Message);
 | 
					 | 
				
			||||||
            }
 | 
					 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        private void TrainBtn_Click(object sender, EventArgs e)
 | 
					        private void TrainBtn_Click(object sender, EventArgs e)
 | 
				
			||||||
        {
 | 
					        {
 | 
				
			||||||
            train(nameTxtBx.Text);
 | 
					            trainBackWorker.RunWorkerAsync();
 | 
				
			||||||
 | 
					            console.AppendText("Training started for " + nameTxtBx.Text);
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        private void RecconizeBtn_Click(object sender, EventArgs e)
 | 
					        private void RecconizeBtn_Click(object sender, EventArgs e)
 | 
				
			||||||
        {
 | 
					        {
 | 
				
			||||||
            recognize(nameTxtBx.Text);
 | 
					            recognizeBackWorker.RunWorkerAsync();
 | 
				
			||||||
 | 
					            console.AppendText("Started recognition");
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        private void console_TextChanged(object sender, EventArgs e)
 | 
					        private void console_TextChanged(object sender, EventArgs e)
 | 
				
			||||||
        {
 | 
					        {
 | 
				
			||||||
            console.AppendText("\n");
 | 
					            console.AppendText("\n");
 | 
				
			||||||
 | 
					            console.SelectionStart = console.Text.Length;
 | 
				
			||||||
 | 
					            console.ScrollToCaret();
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        private void trainBackWorker_DoWork(object sender, DoWorkEventArgs e)
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					            train(nameTxtBx.Text);
 | 
				
			||||||
 | 
					        }       
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        private void trainBackWorker_RunWorkerCompleted(object sender, RunWorkerCompletedEventArgs e)
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					            console.AppendText("Finished training: " + nameTxtBx.Text);
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        private void recognizeBackWorker_DoWork(object sender, DoWorkEventArgs e)
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					            recognize(nameTxtBx.Text);
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        private void recognizeBackWorker_RunWorkerCompleted(object sender, RunWorkerCompletedEventArgs e)
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					            console.AppendText("Recognition finished\nResults:");
 | 
				
			||||||
 | 
					            printResults();
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        void printResults()
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					            foreach(var number in predictions)
 | 
				
			||||||
 | 
					            {
 | 
				
			||||||
 | 
					                console.AppendText(number.ToString());
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
				
			|||||||
@ -117,4 +117,10 @@
 | 
				
			|||||||
  <resheader name="writer">
 | 
					  <resheader name="writer">
 | 
				
			||||||
    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
 | 
					    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
 | 
				
			||||||
  </resheader>
 | 
					  </resheader>
 | 
				
			||||||
 | 
					  <metadata name="trainBackWorker.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
 | 
				
			||||||
 | 
					    <value>17, 17</value>
 | 
				
			||||||
 | 
					  </metadata>
 | 
				
			||||||
 | 
					  <metadata name="recognizeBackWorker.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
 | 
				
			||||||
 | 
					    <value>158, 17</value>
 | 
				
			||||||
 | 
					  </metadata>
 | 
				
			||||||
</root>
 | 
					</root>
 | 
				
			||||||
		Loading…
	
		Reference in New Issue
	
	Block a user