private void debug1ToolStripMenuItem_Click(object sender, EventArgs e) { //Image<Gray,byte> debugImage = new Image<Gray, byte>("1.jpg"); //ImageViewerManager.Instance().ShowPicture(debugImage); SampleThreadFunc(); ColorDetectResult result = Cv.DetectColor(new Image <Rgb, byte>(TcpIpFileManager.GetInstance().FilePath)); TcpIpFileManager.GetInstance().IsFileFresh = false; WriteToConsole("Color Det= " + result.Result); }
public static bool IsT1G1End() { if (!FinalSign) { return(false); } ColorDetectResult result = Cv.DetectColor(new Image <Rgb, byte>(TcpIpFileManager.GetInstance().FilePath)); if (result.Result > 180) { while (true) { FormMain.GetInstance().SampleThreadFunc(); Image <Rgb, Byte> rawImage = new Image <Rgb, byte>((Bitmap)TcpIpFileManager.GetInstance().NowImage); double[] threshold1 = new double[] { 200 }; double[] threshold2 = new double[] { 100, 200, 300 }; CannyTextureAnalysisResult textureAnalysisResult = Cv.AutoCannyTextureAnalysis(rawImage, threshold1, threshold2, 0); TcpIpFileManager.GetInstance().IsFileFresh = false; float threshold = 0.05f; if (Math.Abs(textureAnalysisResult.Diff - 0.15) < threshold) { return(true); } else { if (textureAnalysisResult.Diff > threshold) { Arduino.GetInstance().Send(MotorDirection.Forward, 80, MotorDirection.Backward, 80, 300); } else if (textureAnalysisResult.Diff < -threshold) { Arduino.GetInstance().Send(MotorDirection.Backward, 80, MotorDirection.Forward, 80, 300); } } while (StateManager.ArduinoState.IsBusy) { Thread.Sleep(100); } } } else { return(false); } }
public static void T1G2() { Arduino.GetInstance().GoStraight(110); while (StateManager.ArduinoState.IsBusy) { Thread.Sleep(100); } FormMain.GetInstance().SampleThreadFunc(); TcpIpFileManager.GetInstance().IsFileFresh = false; FormMain.GetInstance().SampleThreadFunc(); ColorDetectResult result = Cv.DetectColor(new Image <Rgb, byte>(TcpIpFileManager.GetInstance().FilePath)); TcpIpFileManager.GetInstance().IsFileFresh = false; Arduino.GetInstance().GoStraight(7); while (StateManager.ArduinoState.IsBusy) { Thread.Sleep(100); } //if (result.Result <= 130 && result.Result >= 60) //Yellow Green //{ // FormMain.GetInstance().WriteToConsole("YELLOW"); // Arduino.GetInstance().PidTurn(90); // while (StateManager.ArduinoState.IsBusy) // { // Thread.Sleep(100); // } // Arduino.GetInstance().GoStraight(180); // while (true) // { // Arduino.GetInstance().GoStraight(3); // while (StateManager.ArduinoState.IsBusy) // { // Thread.Sleep(100); // } // Arduino.GetInstance().GetDistance(); // float dis = Arduino.GetInstance().SonicDistance; // if (dis > 40 && dis < 80) // { // break; // } // } // while (StateManager.ArduinoState.IsBusy) // { // Thread.Sleep(100); // } // Arduino.GetInstance().PidTurn(-90); // while (StateManager.ArduinoState.IsBusy) // { // Thread.Sleep(100); // } //} //else if (result.Result <= 240) //Blue //{ // FormMain.GetInstance().WriteToConsole("BLUE"); // Arduino.GetInstance().PidTurn(135); // while (StateManager.ArduinoState.IsBusy) // { // Thread.Sleep(100); // } // Arduino.GetInstance().GoStraight(75); // while (StateManager.ArduinoState.IsBusy) // { // Thread.Sleep(100); // } // Arduino.GetInstance().PidTurn(-55); // while (StateManager.ArduinoState.IsBusy) // { // Thread.Sleep(100); // } // //Finish // Arduino.GetInstance().GoStraight(160); // while (true) // { // Arduino.GetInstance().GoStraight(3); // while (StateManager.ArduinoState.IsBusy) // { // Thread.Sleep(100); // } // Arduino.GetInstance().GetDistance(); // float dis = Arduino.GetInstance().SonicDistance; // if (dis > 40 && dis < 80) // { // break; // } // } // Arduino.GetInstance().PidTurn(-80); //} if (result.Result <= 320) //Violet { FormMain.GetInstance().WriteToConsole("VIOLET"); Arduino.GetInstance().PidTurn(45); while (StateManager.ArduinoState.IsBusy) { Thread.Sleep(100); } Arduino.GetInstance().GoStraight(75); while (StateManager.ArduinoState.IsBusy) { Thread.Sleep(100); } Arduino.GetInstance().PidTurn(45); while (StateManager.ArduinoState.IsBusy) { Thread.Sleep(100); } //Finish Arduino.GetInstance().GoStraight(160); while (true) { Arduino.GetInstance().GoStraight(3); while (StateManager.ArduinoState.IsBusy) { Thread.Sleep(100); } Arduino.GetInstance().GetDistance(); float dis = Arduino.GetInstance().SonicDistance; if (dis > 40 && dis < 80) { break; } } Arduino.GetInstance().PidTurn(-90); } else { throw new LogicErrorException(); } }