//internal override IntPtr PtrObj => detectorPtr.CvPtr;

        #region Init & Disposal

        /// <summary>
        ///
        /// </summary>
        /// <param name="indexParams"></param>
        /// <param name="searchParams"></param>
        public FlannBasedMatcher(IndexParams?indexParams = null, SearchParams?searchParams = null)
        {
            indexParams?.ThrowIfDisposed();
            searchParams?.ThrowIfDisposed();

            IntPtr indexParamsPtr  = indexParams?.PtrObj?.CvPtr ?? IntPtr.Zero;
            IntPtr searchParamsPtr = searchParams?.PtrObj?.CvPtr ?? IntPtr.Zero;

            ptr = NativeMethods.features2d_FlannBasedMatcher_new(indexParamsPtr, searchParamsPtr);
            this.indexParams  = indexParams;
            this.searchParams = searchParams;
        }
        /// <summary>
        ///
        /// </summary>
        /// <param name="indexParams"></param>
        /// <param name="searchParams"></param>
        public FlannBasedMatcher(IndexParams?indexParams = null, SearchParams?searchParams = null)
        {
            indexParams?.ThrowIfDisposed();
            searchParams?.ThrowIfDisposed();

            var indexParamsPtr  = indexParams?.PtrObj?.CvPtr ?? IntPtr.Zero;
            var searchParamsPtr = searchParams?.PtrObj?.CvPtr ?? IntPtr.Zero;

            NativeMethods.HandleException(
                NativeMethods.features2d_FlannBasedMatcher_new(indexParamsPtr, searchParamsPtr, out ptr));
            this.indexParams  = indexParams;
            this.searchParams = searchParams;
        }