private void HoughProcess(Mat src, Mat dest, RoundBlock roundblock) { Mat srcCopy = new Mat(); CvInvoke.CvtColor(src, srcCopy, ColorConversion.Bgr2Gray); double cannyThreshold = 180.0; double circleAccumulatorThreshold = 120; CircleF[] circle = CvInvoke.HoughCircles(srcCopy, HoughType.Gradient, 2.0, 20.0, cannyThreshold, circleAccumulatorThreshold, 5); //Mat circleImage = new Mat(dest.Size, DepthType.Cv8U, 3); //circleImage.SetTo(new MCvScalar(0)); // Mat circleimage = new Mat(); if (circle.Length > 0) { CvInvoke.Circle(dest, Point.Round(circle[0].Center), (int)circle[0].Radius, new Bgr(Color.White).MCvScalar, 2); roundblock.ROI = new Rectangle((int)(circle[0].Center.X - circle[0].Radius), (int)(circle[0].Center.Y - circle[0].Radius), 2 * (int)(circle[0].Radius), 2 * (int)(circle[0].Radius)); roundblock.image = new Mat(srcCopy, roundblock.ROI); roundblock.BlockCenterInImage = Point.Round(circle[0].Center); roundblock.BlockCenter = environment.axis_Dobot2User(roundblock.BlockCenterInImage); HoughGotFlag = true; } }
public Controler(RoundBlock CtrledPlant, Environment environment, frmDobot tranceiver) { this.CtrledPlant = CtrledPlant; this.environment = environment; this.tranceiver = tranceiver; }