public static Emgu.CV.Util.VectorOfVectorOfPoint FindContours(this Emgu.CV.IInputOutputArray image, Emgu.CV.CvEnum.ChainApproxMethod method) { var contours = new Emgu.CV.Util.VectorOfVectorOfPoint(); Emgu.CV.CvInvoke.FindContours(image: image, contours: contours, hierarchy: null, mode: Emgu.CV.CvEnum.RetrType.External, method: method); return(contours); }
public static Emgu.CV.Structure.RotatedRect GetLargestFeature(this Emgu.CV.IInputOutputArray image) { using (var contours = image.FindContours(method: Emgu.CV.CvEnum.ChainApproxMethod.ChainApproxSimple)) { var bigSize = 0d; Emgu.CV.Util.VectorOfPoint?bigPoints = null; for (var x = 0; x < contours.Size; x++) { var points = contours[x]; var size = points.CalculateContourArea(); if (size > bigSize) { bigSize = size; bigPoints = points; } } return(bigPoints?.FindMinAreaRect() ?? Emgu.CV.Structure.RotatedRect.Empty); } }