FlannBasedMatcher.cs 3.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899
  1. using OpenCVForUnity.CoreModule;
  2. using OpenCVForUnity.UtilsModule;
  3. using System;
  4. using System.Collections.Generic;
  5. using System.Runtime.InteropServices;
  6. namespace OpenCVForUnity.Features2dModule
  7. {
  8. // C++: class FlannBasedMatcher
  9. /**
  10. * Flann-based descriptor matcher.
  11. *
  12. * This matcher trains cv::flann::Index on a train descriptor collection and calls its nearest search
  13. * methods to find the best matches. So, this matcher may be faster when matching a large train
  14. * collection than the brute force matcher. FlannBasedMatcher does not support masking permissible
  15. * matches of descriptor sets because flann::Index does not support this. :
  16. */
  17. public class FlannBasedMatcher : DescriptorMatcher
  18. {
  19. protected override void Dispose(bool disposing)
  20. {
  21. try
  22. {
  23. if (disposing)
  24. {
  25. }
  26. if (IsEnabledDispose)
  27. {
  28. if (nativeObj != IntPtr.Zero)
  29. features2d_FlannBasedMatcher_delete(nativeObj);
  30. nativeObj = IntPtr.Zero;
  31. }
  32. }
  33. finally
  34. {
  35. base.Dispose(disposing);
  36. }
  37. }
  38. protected internal FlannBasedMatcher(IntPtr addr) : base(addr) { }
  39. // internal usage only
  40. public static new FlannBasedMatcher __fromPtr__(IntPtr addr) { return new FlannBasedMatcher(addr); }
  41. //
  42. // C++: cv::FlannBasedMatcher::FlannBasedMatcher(Ptr_flann_IndexParams indexParams = makePtr<flann::KDTreeIndexParams>(), Ptr_flann_SearchParams searchParams = makePtr<flann::SearchParams>())
  43. //
  44. public FlannBasedMatcher() :
  45. base(DisposableObject.ThrowIfNullIntPtr(features2d_FlannBasedMatcher_FlannBasedMatcher_10()))
  46. {
  47. }
  48. //
  49. // C++: static Ptr_FlannBasedMatcher cv::FlannBasedMatcher::create()
  50. //
  51. public static FlannBasedMatcher create()
  52. {
  53. return FlannBasedMatcher.__fromPtr__(DisposableObject.ThrowIfNullIntPtr(features2d_FlannBasedMatcher_create_10()));
  54. }
  55. #if (UNITY_IOS || UNITY_WEBGL) && !UNITY_EDITOR
  56. const string LIBNAME = "__Internal";
  57. #else
  58. const string LIBNAME = "opencvforunity";
  59. #endif
  60. // C++: cv::FlannBasedMatcher::FlannBasedMatcher(Ptr_flann_IndexParams indexParams = makePtr<flann::KDTreeIndexParams>(), Ptr_flann_SearchParams searchParams = makePtr<flann::SearchParams>())
  61. [DllImport(LIBNAME)]
  62. private static extern IntPtr features2d_FlannBasedMatcher_FlannBasedMatcher_10();
  63. // C++: static Ptr_FlannBasedMatcher cv::FlannBasedMatcher::create()
  64. [DllImport(LIBNAME)]
  65. private static extern IntPtr features2d_FlannBasedMatcher_create_10();
  66. // native support for java finalize()
  67. [DllImport(LIBNAME)]
  68. private static extern void features2d_FlannBasedMatcher_delete(IntPtr nativeObj);
  69. }
  70. }