/// <summary> /// Detect ellipses in image /// </summary> /// <param name="image">Binary image with white foreground</param> /// <returns>List of ellipses found</returns> public DetectedEllipse[] DetectEllipses(Emgu.CV.Image <Emgu.CV.Structure.Gray, byte> image) { List <DetectedEllipse> ellipses = new List <DetectedEllipse>(); Emgu.CV.Contour <System.Drawing.Point> c = image.FindContours(); while (c != null) { if (c.Count() >= _min_contour_count) { Emgu.CV.Structure.Ellipse e = FitByContour(c); double rating = GoodnessOfFit(e, c); ellipses.Add(new DetectedEllipse(c, e, rating)); } c = c.HNext; } return(ellipses.ToArray()); }