/// <summary>
 /// Creates instance from raw pointer T*
 /// </summary>
 /// <param name="ptr"></param>
 internal static DescriptorMatcher FromRawPtr(IntPtr ptr)
 {
     if (ptr == IntPtr.Zero)
         throw new OpenCvSharpException("Invalid DescriptorMatcher pointer");
     var detector = new DescriptorMatcher
     {
         detectorPtr = null,
         ptr = ptr
     };
     return detector;
 }
 /// <summary>
 /// Creates instance from cv::Ptr&lt;T&gt; .
 /// ptr is disposed when the wrapper disposes. 
 /// </summary>
 /// <param name="ptr"></param>
 internal static DescriptorMatcher FromPtr(IntPtr ptr)
 {
     if (ptr == IntPtr.Zero)
         throw new OpenCvSharpException("Invalid cv::Ptr<DescriptorMatcher> pointer");
     var ptrObj = new Ptr<DescriptorMatcher>(ptr);
     var detector = new DescriptorMatcher
         {
             detectorPtr = ptrObj, 
             ptr = ptrObj.Obj
         };
     return detector;
 }
 /// <summary>
 /// The constructor.
 /// </summary>
 /// <param name="dextractor">Descriptor extractor that is used to compute descriptors for an input image and its keypoints.</param>
 /// <param name="dmatcher">Descriptor matcher that is used to find the nearest word of the trained vocabulary for each keypoint descriptor of the image.</param>
 public BOWImgDescriptorExtractor(Feature2D dextractor, DescriptorMatcher dmatcher)
 {
     if (dextractor == null)
     {
         throw new ArgumentNullException(nameof(dextractor));
     }
     if (dmatcher == null)
     {
         throw new ArgumentNullException(nameof(dmatcher));
     }
     ptr = NativeMethods.features2d_BOWImgDescriptorExtractor_new1(
         dextractor.PtrObj, dmatcher.PtrObj);
 }
        /// <summary>
        /// Creates instance from raw pointer T*
        /// </summary>
        /// <param name="ptr"></param>
        internal static DescriptorMatcher FromRawPtr(IntPtr ptr)
        {
            if (ptr == IntPtr.Zero)
            {
                throw new OpenCvSharpException("Invalid DescriptorMatcher pointer");
            }
            var detector = new DescriptorMatcher
            {
                detectorPtr = null,
                ptr         = ptr
            };

            return(detector);
        }
        /// <summary>
        /// Creates instance from cv::Ptr&lt;T&gt; .
        /// ptr is disposed when the wrapper disposes.
        /// </summary>
        /// <param name="ptr"></param>
        internal static DescriptorMatcher FromPtr(IntPtr ptr)
        {
            if (ptr == IntPtr.Zero)
            {
                throw new OpenCvSharpException("Invalid cv::Ptr<DescriptorMatcher> pointer");
            }
            var ptrObj   = new Ptr <DescriptorMatcher>(ptr);
            var detector = new DescriptorMatcher
            {
                detectorPtr = ptrObj,
                ptr         = ptrObj.Obj
            };

            return(detector);
        }