TrackerMIL.cs 2.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103
  1. using OpenCVForUnity.CoreModule;
  2. using OpenCVForUnity.UtilsModule;
  3. using System;
  4. using System.Collections.Generic;
  5. using System.Runtime.InteropServices;
  6. namespace OpenCVForUnity.VideoModule
  7. {
  8. // C++: class TrackerMIL
  9. /**
  10. * The MIL algorithm trains a classifier in an online manner to separate the object from the
  11. * background.
  12. *
  13. * Multiple Instance Learning avoids the drift problem for a robust tracking. The implementation is
  14. * based on CITE: MIL .
  15. *
  16. * Original code can be found here <http://vision.ucsd.edu/~bbabenko/project_miltrack.shtml>
  17. */
  18. public class TrackerMIL : Tracker
  19. {
  20. protected override void Dispose(bool disposing)
  21. {
  22. try
  23. {
  24. if (disposing)
  25. {
  26. }
  27. if (IsEnabledDispose)
  28. {
  29. if (nativeObj != IntPtr.Zero)
  30. video_TrackerMIL_delete(nativeObj);
  31. nativeObj = IntPtr.Zero;
  32. }
  33. }
  34. finally
  35. {
  36. base.Dispose(disposing);
  37. }
  38. }
  39. protected internal TrackerMIL(IntPtr addr) : base(addr) { }
  40. // internal usage only
  41. public static new TrackerMIL __fromPtr__(IntPtr addr) { return new TrackerMIL(addr); }
  42. //
  43. // C++: static Ptr_TrackerMIL cv::TrackerMIL::create(TrackerMIL_Params parameters = TrackerMIL::Params())
  44. //
  45. /**
  46. * Create MIL tracker instance
  47. * param parameters MIL parameters TrackerMIL::Params
  48. * return automatically generated
  49. */
  50. public static TrackerMIL create(TrackerMIL_Params parameters)
  51. {
  52. if (parameters != null) parameters.ThrowIfDisposed();
  53. return TrackerMIL.__fromPtr__(DisposableObject.ThrowIfNullIntPtr(video_TrackerMIL_create_10(parameters.nativeObj)));
  54. }
  55. /**
  56. * Create MIL tracker instance
  57. * return automatically generated
  58. */
  59. public static TrackerMIL create()
  60. {
  61. return TrackerMIL.__fromPtr__(DisposableObject.ThrowIfNullIntPtr(video_TrackerMIL_create_11()));
  62. }
  63. #if (UNITY_IOS || UNITY_WEBGL) && !UNITY_EDITOR
  64. const string LIBNAME = "__Internal";
  65. #else
  66. const string LIBNAME = "opencvforunity";
  67. #endif
  68. // C++: static Ptr_TrackerMIL cv::TrackerMIL::create(TrackerMIL_Params parameters = TrackerMIL::Params())
  69. [DllImport(LIBNAME)]
  70. private static extern IntPtr video_TrackerMIL_create_10(IntPtr parameters_nativeObj);
  71. [DllImport(LIBNAME)]
  72. private static extern IntPtr video_TrackerMIL_create_11();
  73. // native support for java finalize()
  74. [DllImport(LIBNAME)]
  75. private static extern void video_TrackerMIL_delete(IntPtr nativeObj);
  76. }
  77. }