Example #1
0
        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);
        }
Example #2
0
        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);
            }
        }