/// <summary> /// Create a flann index for 3D points /// </summary> /// <param name="points">The IPosition3D array</param> /// <param name="ip">The index parameters</param> public Index3D(MCvPoint3D32f[] points, IIndexParams ip) { _points = points; _dataHandle = GCHandle.Alloc(_points, GCHandleType.Pinned); _dataMatrix = new Matrix<float>(_points.Length, 3, _dataHandle.AddrOfPinnedObject()); _flannIndex = new Index(_dataMatrix, ip); _query = new Matrix<float>(1, 3); _distance = new Matrix<float>(1, 1); _index = new Matrix<int>(1, 1); }
/// <summary> /// Create a flann index /// </summary> /// <param name="values">A row by row matrix of descriptors</param> /// <param name="ip">The index parameter</param> /// <param name="distType">The distance type</param> public Index(IInputArray values, IIndexParams ip, DistType distType = DistType.L2) { using (InputArray iaValues = values.GetInputArray()) _ptr = CvInvoke.cveFlannIndexCreate(iaValues, ip.IndexParamPtr, distType); }
/// <summary> /// Create a Flann based matcher. /// </summary> /// <param name="indexParams">The type of index parameters</param> /// <param name="search">The search parameters</param> public FlannBasedMatcher(IIndexParams indexParams, SearchParams search) { _ptr = Features2DInvoke.cveFlannBasedMatcherCreate(indexParams.IndexParamPtr, search.Ptr, ref _descriptorMatcherPtr); }
/// <summary> /// Create a flann index /// </summary> /// <param name="values">A row by row matrix of descriptors</param> /// <param name="ip">The index parameter</param> public Index(IInputArray values, IIndexParams ip) { using (InputArray iaValues = values.GetInputArray()) _ptr = cveFlannIndexCreate(iaValues, ip.IndexParamPtr); }