示例#1
0
        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;
            }
        }
示例#2
0
 public Controler(RoundBlock CtrledPlant, Environment environment, frmDobot tranceiver)
 {
     this.CtrledPlant = CtrledPlant;
     this.environment = environment;
     this.tranceiver  = tranceiver;
 }