public static void Debug1() { string debugPath = Environment.CurrentDirectory + Path.DirectorySeparatorChar + "DEBUG" + Path.DirectorySeparatorChar + "DEBUG3.jpg"; //LbpTextureAnalysisResult textureResult = Cv.LbpTextureAnalysis(debugPath); Image <Rgb, Byte> rawImage = new Image <Rgb, byte>(debugPath); Image <Rgb, Byte> rawimage = rawImage.Resize(480, 240, Inter.Linear); double[] threshold1 = new double[] { 200 }; double[] threshold2 = new double[] { 200, 300, 400 }; CannyTextureAnalysisResult textureAnalysisResult = Cv.AutoCannyTextureAnalysis(rawimage, threshold1, threshold2, 0); ZedGraphForm tempZedGraphForm = new ZedGraphForm(textureAnalysisResult.Data); tempZedGraphForm.Show(); MessageBox.Show(textureAnalysisResult.Info); //ShowImg(textureAnalysisResult.Img); }
private void buttonSample_Click(object sender, EventArgs e) { /* * Image tempImage = videoSourcePlayer.GetCurrentVideoFrame(); * string tempPath = _tempFileManager.AddTempFile(tempImage); * TextureAnalysisResult textureResult = Cv.TextureAnalysis(tempPath); * FindCuttingPointResult cuttingPointResult = Cv.FindCuttingPoint(textureResult, Cv.FindCuttingPointMode.MaximumMethod); * Bitmap resultImage = textureResult.img.Resize(pictureBox.Width, pictureBox.Height, Inter.Linear, true).Bitmap; * * Bitmap newBitmap = new Bitmap(resultImage.Width, resultImage.Height); * Graphics g = Graphics.FromImage(newBitmap); * g.DrawImage(resultImage, 0, 0); * for (int i = 0; i < cuttingPointResult.Edges.Count; i++) * { * float location = (float)cuttingPointResult.Edges[i] / cuttingPointResult.Accuracy * newBitmap.Width; * g.DrawLine(new Pen(Color.Red, 4), location, 0 * newBitmap.Height, location, 1 * newBitmap.Height); * } * g.Dispose(); * * pictureBox.Image = newBitmap; */ string tempPath = VideoSourceDevice.GetCurrentPicturePath(); Image <Rgb, Byte> rawImage = new Image <Rgb, byte>(tempPath); double[] threshold1 = new double[] { 200 }; double[] threshold2 = new double[] { 200, 300, 400 }; CannyTextureAnalysisResult textureAnalysisResult = Cv.AutoCannyTextureAnalysis(rawImage, threshold1, threshold2, 0); ZedGraphForm tempZedGraphForm = new ZedGraphForm(textureAnalysisResult.Data); tempZedGraphForm.Show(); MessageBox.Show(textureAnalysisResult.Info); }
private void buttonSample_Click(object sender, EventArgs e) { Image <Rgb, Byte> rawImage; string tempPath = VideoSourceDevice.GetCurrentPicturePath(); try { rawImage = new Image <Rgb, byte>(tempPath); } catch (Exception exception) { Console.WriteLine(exception); return; } double[] threshold1 = new double[] { 200 }; double[] threshold2 = new double[] { 200, 300, 400 }; CannyTextureAnalysisResult textureAnalysisResult = Cv.AutoCannyTextureAnalysis(rawImage, threshold1, threshold2, 0); float diff = textureAnalysisResult.Diff; /* * ZedGraphForm tempGraphForm = new ZedGraphForm(textureAnalysisResult.Data); * tempGraphForm.Show(); */ Debug.ShowImg(textureAnalysisResult.Img); textBoxConsole.AppendText("Center: " + textureAnalysisResult.Center + Environment.NewLine); // if center is close to 0.5, it means the car direction is nearly towards the path. float threadhold = 0.05f; if (Math.Abs(diff) > threadhold) { if (diff > threadhold) { if (_previousDiff < -threadhold) { Arduino.GetInstance().Send(MotorDirection.Forward, 35, MotorDirection.Backward, 35, 200); } else { Arduino.GetInstance().Send(MotorDirection.Forward, 75, MotorDirection.Backward, 75, 200); } } else if (diff < -threadhold) { if (_previousDiff > threadhold) { Arduino.GetInstance().Send(MotorDirection.Backward, 35, MotorDirection.Forward, 35, 200); } else { Arduino.GetInstance().Send(MotorDirection.Backward, 75, MotorDirection.Forward, 75, 200); } } } else { Arduino.GetInstance().Send(MotorDirection.Forward, 75, MotorDirection.Forward, 75, 200); } _previousDiff = diff; }
private static void G1T1Loop() { Image <Rgb, Byte> rawImage; string tempPath = VideoSourceDevice.GetCurrentPicturePath(); try { rawImage = new Image <Rgb, byte>(tempPath); } catch (Exception exception) { Console.WriteLine(exception); return; } double[] threshold1 = new double[] { 200 }; double[] threshold2 = new double[] { 200, 300, 400 }; CannyTextureAnalysisResult textureAnalysisResult = Cv.AutoCannyTextureAnalysis(rawImage, threshold1, threshold2, 0); float center = textureAnalysisResult.Center; float diff = textureAnalysisResult.Diff; // if center is close to 0.5, it means the car direction is nearly towards the path. float threadhold = 0.02f; if (Math.Abs(diff) > threadhold) { if (diff > threadhold) { if (_previousDiff < -threadhold) { Arduino.GetInstance().Send(MotorDirection.Forward, 35, MotorDirection.Backward, 35, 200); } else { Arduino.GetInstance().Send(MotorDirection.Forward, 75, MotorDirection.Backward, 75, 200); } } else if (diff < -threadhold) { if (_previousDiff > threadhold) { Arduino.GetInstance().Send(MotorDirection.Backward, 35, MotorDirection.Forward, 35, 200); } else { Arduino.GetInstance().Send(MotorDirection.Backward, 75, MotorDirection.Forward, 75, 200); } } } else { Arduino.GetInstance().Send(MotorDirection.Forward, 75, MotorDirection.Forward, 75, 200); } _previousDiff = diff; }