/// <summary>
        /// Converts MSER contours (vector<Point>) to ERStat regions.
        /// </summary>
        /// <param name="image">Source image CV_8UC1 from which the MSERs where extracted.</param>
        /// <param name="contours">Input vector with all the contours</param>
        /// <param name="regions">Output where the ERStat regions are stored</param>
        public static void MSERsToERStats(InputArray image, Point[][] contours, out ERStat[][] regions)
        {
            using (var vecRegions = new VectorOfVectorERStat())
                using (var vecContours = new VectorOfVectorPoint(contours))
                {
                    NativeMethods.text_MSERsToERStats(image.CvPtr, vecContours.CvPtr, vecRegions.CvPtr);

                    regions = vecRegions.ToArray();
                }
        }
        /// <summary>
        /// Find groups of Extremal Regions that are organized as text blocks
        /// </summary>
        /// <param name="image">Original RGB or Greyscale image from wich the regions were extracted</param>
        /// <param name="channels">Vector of single channel images CV_8UC1 from wich the regions were extracted</param>
        /// <param name="regions">Vector of ER's retrieved from the ERFilter algorithm from each channel</param>
        /// <param name="groups">The output of the algorithm is stored in this parameter as set of lists of indexes to provided regions</param>
        /// <param name="groups_rects">The output of the algorithm are stored in this parameter as list of rectangles</param>
        /// <param name="method">Grouping method (see GroupingModes). Can be one of { OrientationHorizontal, OrientationAny }</param>
        /// <param name="filename">The XML or YAML file with the classifier model. Only to use when grouping method is OrientationAny</param>
        /// <param name="minProbablity">The minimum probability for accepting a group. Only to use when grouping method is OrientationAny</param>
        public static void ErGrouping(Mat image, Mat[] channels, ERStat[][] regions, out Vec2i[][] groups, out Rect[] groups_rects, GroupingModes method, string filename = null, float minProbablity = 0.5f)
        {
            using (var vecChannels = new InputArray(channels))
                using (var vecRegions = new VectorOfVectorERStat(regions))
                    using (var vecGroups = new VectorOfVectorVec2i())
                        using (var vecRects = new VectorOfRect())
                            using (var input = new InputArray(image))
                            {
                                if (null == filename)
                                {
                                    filename = string.Empty;
                                }
                                NativeMethods.text_erGrouping1(input.CvPtr, vecChannels.CvPtr, vecRegions.CvPtr, vecGroups.CvPtr, vecRects.CvPtr, (int)method, filename, minProbablity);

                                groups       = vecGroups.ToArray();
                                groups_rects = vecRects.ToArray();
                            }
        }