I am trying to detect a Circle inside a Rectangle in AForge
. I successfully defined Rectangles
, but could not find circles
inside the Rectangle
. How to find a shape inside another shape in AForge
.
string strPath = Server.MapPath("~/Recipt001.png"); Bitmap myBitmap = new Bitmap(strPath); //Some filters Grayscale, invert, threshold //Blod Filtering BlobCounter blobCounter = new BlobCounter(); blobCounter.ProcessImage(temp); blobCounter.ObjectsOrder = ObjectsOrder.YX; blobCounter.FilterBlobs = true; Blob[] blobs = blobCounter.GetObjectsInformation(); Graphics g = Graphics.FromImage(myBitmap); Pen redPen = new Pen(Color.Red, 2); SimpleShapeChecker shapeChecker = new SimpleShapeChecker(); // dictionary of color to highlight different shapes Dictionary<PolygonSubType, Color> colors = new Dictionary<PolygonSubType, Color>(); colors.Add(PolygonSubType.Unknown, Color.White); colors.Add(PolygonSubType.Trapezoid, Color.Orange); colors.Add(PolygonSubType.Parallelogram, Color.Red); colors.Add(PolygonSubType.Rectangle, Color.Green); colors.Add(PolygonSubType.Square, Color.Blue); colors.Add(PolygonSubType.Rhombus, Color.Gray); colors.Add(PolygonSubType.EquilateralTriangle, Color.Pink); colors.Add(PolygonSubType.IsoscelesTriangle, Color.Purple); colors.Add(PolygonSubType.RectangledTriangle, Color.SkyBlue); colors.Add(PolygonSubType.RectangledIsoscelesTriangle, Color.SeaGreen); for (int i = 0, n = blobs.Length; i < n; i++) { List<IntPoint> corners; List<IntPoint> edgePoints = blobCounter.GetBlobsEdgePoints(blobs[i]); Point center; double radius; if (shapeChecker.IsQuadrilateral(edgePoints, out corners)) { if (shapeChecker.CheckPolygonSubType(corners) == PolygonSubType.Rectangle) { g.DrawPolygon(redPen, ToPointsArray(corners)); } } } redPen.Dispose(); g.Dispose();
source share