示例#1
0
 /// <summary>
 /// Release the unmanaged memory associated with this ShapeTransformer object
 /// </summary>
 protected override void DisposeObject()
 {
     if (_ptr != IntPtr.Zero)
     {
         ShapeInvoke.cvShapeTransformerRelease(ref _ptr);
     }
 }
示例#2
0
 /// <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));
         }
 }
示例#4
0
 /// <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;
     }
 }
示例#5
0
 /// <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;
     }
 }
示例#6
0
 /// <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();
 }
示例#7
0
        /// <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();
        }
示例#8
0
        //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);
        }
示例#9
0
 /// <summary>
 /// Create an affine transformer
 /// </summary>
 /// <param name="fullAffine">Full affine</param>
 public AffineTransformer(bool fullAffine)
 {
     _ptr = ShapeInvoke.cvAffineTransformerCreate(fullAffine, ref _shapeTransformerPtr);
 }
示例#10
0
 /// <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);
 }
示例#11
0
 /// <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);
 }
示例#12
0
 /// <summary>
 /// Release the memory associated with this shape context distance extractor
 /// </summary>
 protected override void DisposeObject()
 {
     ShapeInvoke.cvShapeContextDistanceExtractorRelease(ref _ptr);
 }
示例#13
0
 /// <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);
 }
示例#14
0
        //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);
        }
示例#15
0
 /// <summary>
 /// Release the memory associated with this Hausdorff distance extrator
 /// </summary>
 protected override void DisposeObject()
 {
     ShapeInvoke.cvHausdorffDistanceExtractorRelease(ref _ptr);
     base.DisposeObject();
 }
示例#16
0
 /// <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);
 }
示例#17
0
 /// <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);
 }
示例#18
0
 /// <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);
 }
示例#19
0
 /// <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));
 }