/// <summary> /// matches two contours using one of the available algorithms /// </summary> /// <param name="contour1"></param> /// <param name="contour2"></param> /// <param name="method"></param> /// <param name="parameter"></param> /// <returns></returns> public static double MatchShapes(IEnumerable<Point> contour1, IEnumerable<Point> contour2, ShapeMatchModes method, double parameter = 0) { if (contour1 == null) throw new ArgumentNullException(nameof(contour1)); if (contour2 == null) throw new ArgumentNullException(nameof(contour2)); Point[] contour1Array = EnumerableEx.ToArray(contour1); Point[] contour2Array = EnumerableEx.ToArray(contour2); return NativeMethods.imgproc_matchShapes_Point(contour1Array, contour1Array.Length, contour2Array, contour2Array.Length, (int)method, parameter); }
/// <summary> /// matches two contours using one of the available algorithms /// </summary> /// <param name="contour1"></param> /// <param name="contour2"></param> /// <param name="method"></param> /// <param name="parameter"></param> /// <returns></returns> public static double MatchShapes(InputArray contour1, InputArray contour2, ShapeMatchModes method, double parameter = 0) { if (contour1 == null) throw new ArgumentNullException(nameof(contour1)); if (contour2 == null) throw new ArgumentNullException(nameof(contour2)); var ret = NativeMethods.imgproc_matchShapes_InputArray(contour1.CvPtr, contour2.CvPtr, (int)method, parameter); GC.KeepAlive(contour1); GC.KeepAlive(contour2); return ret; }