/// <summary> /// Release the unmanaged memory associated with this ShapeTransformer object /// </summary> protected override void DisposeObject() { if (_ptr != IntPtr.Zero) { ShapeInvoke.cvShapeTransformerRelease(ref _ptr); } }
/// <summary> /// Release the histogram cost extractor /// </summary> protected override void DisposeObject() { if (_ptr != IntPtr.Zero) { ShapeInvoke.cvHistogramCostExtractorRelease(ref _ptr, ref _sharedPtr); } }
/// <summary> /// Compute the shape distance between two shapes defined by its contours. /// </summary> /// <param name="contour1">Contour defining first shape</param> /// <param name="contour2">Contour defining second shape</param> /// <returns>The shape distance between two shapes defined by its contours.</returns> public float ComputeDistance(Point[] contour1, Point[] contour2) { using (Emgu.CV.Util.VectorOfPoint c1 = new Util.VectorOfPoint(contour1)) using (Emgu.CV.Util.VectorOfPoint c2 = new Util.VectorOfPoint(contour2)) { return(ShapeInvoke.cvShapeDistanceExtractorComputeDistance(_ptr, c1, c2)); } }
/// <summary> /// Release the unmanaged memory associated with this ShapeTransformer object /// </summary> protected override void DisposeObject() { if (_ptr != IntPtr.Zero) { ShapeInvoke.cvThinPlateSplineShapeTransformerRelease(ref _ptr); _shapeTransformerPtr = IntPtr.Zero; } }
/// <summary> /// Release the unmanaged memory associated with this ShapeTransformer object /// </summary> protected override void DisposeObject() { if (_ptr != IntPtr.Zero) { ShapeInvoke.cvAffineTransformerRelease(ref _ptr, ref _sharedPtr); _shapeTransformerPtr = IntPtr.Zero; } }
/// <summary> /// Release the memory associated with this shape context distance extractor /// </summary> protected override void DisposeObject() { if (IntPtr.Zero != _ptr) { ShapeInvoke.cveShapeContextDistanceExtractorRelease(ref _sharedPtr); } base.DisposeObject(); }
/// <summary> /// Release the memory associated with this Hausdorff distance extractor /// </summary> protected override void DisposeObject() { if (_sharedPtr != IntPtr.Zero) { ShapeInvoke.cveHausdorffDistanceExtractorRelease(ref _sharedPtr); _ptr = IntPtr.Zero; } base.DisposeObject(); }
//private IntPtr _sharedPtr; /// <summary> /// Create a shape context distance extractor /// </summary> /// <param name="comparer">The histogram cost extractor, use ChiHistogramCostExtractor as default</param> /// <param name="transformer">The shape transformer, use ThinPlateSplineSphapeTransformer as default</param> /// <param name="nAngularBins">Establish the number of angular bins for the Shape Context Descriptor used in the shape matching pipeline.</param> /// <param name="nRadialBins">Establish the number of radial bins for the Shape Context Descriptor used in the shape matching pipeline.</param> /// <param name="innerRadius">Set the inner radius of the shape context descriptor.</param> /// <param name="outerRadius">Set the outer radius of the shape context descriptor.</param> /// <param name="iterations">Iterations</param> public ShapeContextDistanceExtractor( HistogramCostExtractor comparer, IShapeTransformer transformer, int nAngularBins = 12, int nRadialBins = 4, float innerRadius = 0.2f, float outerRadius = 3, int iterations = 3) { _ptr = ShapeInvoke.cveShapeContextDistanceExtractorCreate(nAngularBins, nRadialBins, innerRadius, outerRadius, iterations, comparer, transformer.ShapeTransformerPtr, ref _shapeDistanceExtractorPtr, ref _sharedPtr); }
/// <summary> /// Create an affine transformer /// </summary> /// <param name="fullAffine">Full affine</param> public AffineTransformer(bool fullAffine) { _ptr = ShapeInvoke.cvAffineTransformerCreate(fullAffine, ref _shapeTransformerPtr); }
/// <summary> /// Create a thin plate spline shape transformer /// </summary> /// <param name="regularizationParameter">The regularization parameter for relaxing the exact interpolation requirements of the TPS algorithm.</param> public ThinPlateSplineShapeTransformer(double regularizationParameter = 0) { _ptr = ShapeInvoke.cvThinPlateSplineShapeTransformerCreate(regularizationParameter, ref _shapeTransformerPtr); }
/// <summary> /// Create Hausdorff distance extractor /// </summary> /// <param name="distanceFlag">Rhe norm used to compute the Hausdorff value between two shapes. It can be L1 or L2 norm.</param> /// <param name="rankProp">The rank proportion (or fractional value) that establish the Kth ranked value of the partial Hausdorff distance. Experimentally had been shown that 0.6 is a good value to compare shapes.</param> public HausdorffDistanceExtractor(CvEnum.DistType distanceFlag = CvEnum.DistType.L2, float rankProp = 0.6f) { _ptr = ShapeInvoke.cvHausdorffDistanceExtractorCreate(distanceFlag, rankProp); }
/// <summary> /// Release the memory associated with this shape context distance extractor /// </summary> protected override void DisposeObject() { ShapeInvoke.cvShapeContextDistanceExtractorRelease(ref _ptr); }
/// <summary> /// Create an EMD based cost extraction. /// </summary> /// <param name="flag">Distance type</param> /// <param name="nDummies">Number of dummies</param> /// <param name="defaultCost">Default cost</param> public EMDHistogramCostExtractor(CvEnum.DistType flag = CvEnum.DistType.L2, int nDummies = 25, float defaultCost = 0.2f) { _ptr = ShapeInvoke.cvEMDHistogramCostExtractorCreate(flag, nDummies, defaultCost, ref _sharedPtr); }
//private IntPtr _sharedPtr; /// <summary> /// Create Hausdorff distance extractor /// </summary> /// <param name="distanceFlag">Rhe norm used to compute the Hausdorff value between two shapes. It can be L1 or L2 norm.</param> /// <param name="rankProp">The rank proportion (or fractional value) that establish the Kth ranked value of the partial Hausdorff distance. Experimentally had been shown that 0.6 is a good value to compare shapes.</param> public HausdorffDistanceExtractor(CvEnum.DistType distanceFlag = CvEnum.DistType.L2, float rankProp = 0.6f) { _ptr = ShapeInvoke.cveHausdorffDistanceExtractorCreate(distanceFlag, rankProp, ref _shapeDistanceExtractorPtr, ref _sharedPtr); }
/// <summary> /// Release the memory associated with this Hausdorff distance extrator /// </summary> protected override void DisposeObject() { ShapeInvoke.cvHausdorffDistanceExtractorRelease(ref _ptr); base.DisposeObject(); }
/// <summary> /// Create an Chi based cost extraction. /// </summary> /// <param name="nDummies">Number of dummies</param> /// <param name="defaultCost">Default cost</param> public ChiHistogramCostExtractor(int nDummies = 25, float defaultCost = 0.2f) { _ptr = ShapeInvoke.cvChiHistogramCostExtractorCreate(nDummies, defaultCost); }
/// <summary> /// Create a norm based cost extraction. /// </summary> /// <param name="flag">Distance type</param> /// <param name="nDummies">Number of dummies</param> /// <param name="defaultCost">Default cost</param> public NormHistogramCostExtractor(CvEnum.DistType flag = CvEnum.DistType.L2, int nDummies = 25, float defaultCost = 0.2f) { _ptr = ShapeInvoke.cvNormHistogramCostExtractorCreate(flag, nDummies, defaultCost); }
/// <summary> /// Create an EMD-L1 based cost extraction. /// </summary> /// <param name="nDummies">Number of dummies</param> /// <param name="defaultCost">Default cost</param> public EMDL1HistogramCostExtractor(int nDummies = 25, float defaultCost = 0.2f) { _ptr = ShapeInvoke.cvEMDL1HistogramCostExtractorCreate(nDummies, defaultCost, ref _sharedPtr); }
/// <summary> /// Compute the shape distance between two shapes defined by its contours. /// </summary> /// <param name="contour1">Contour defining first shape</param> /// <param name="contour2">Contour defining second shape</param> /// <returns>The shape distance between two shapes defined by its contours.</returns> public float ComputeDistance(IInputArray contour1, IInputArray contour2) { using (InputArray iaContour1 = contour1.GetInputArray()) using (InputArray iaContour2 = contour2.GetInputArray()) return(ShapeInvoke.cveShapeDistanceExtractorComputeDistance(_shapeDistanceExtractorPtr, iaContour1, iaContour2)); }