BOWKMeansTrainer.cs 5.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173
  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 BOWKMeansTrainer
  9. /**
  10. * kmeans -based class to train visual vocabulary using the *bag of visual words* approach. :
  11. */
  12. public class BOWKMeansTrainer : BOWTrainer
  13. {
  14. protected override void Dispose(bool disposing)
  15. {
  16. try
  17. {
  18. if (disposing)
  19. {
  20. }
  21. if (IsEnabledDispose)
  22. {
  23. if (nativeObj != IntPtr.Zero)
  24. features2d_BOWKMeansTrainer_delete(nativeObj);
  25. nativeObj = IntPtr.Zero;
  26. }
  27. }
  28. finally
  29. {
  30. base.Dispose(disposing);
  31. }
  32. }
  33. protected internal BOWKMeansTrainer(IntPtr addr) : base(addr) { }
  34. // internal usage only
  35. public static new BOWKMeansTrainer __fromPtr__(IntPtr addr) { return new BOWKMeansTrainer(addr); }
  36. //
  37. // C++: cv::BOWKMeansTrainer::BOWKMeansTrainer(int clusterCount, TermCriteria termcrit = TermCriteria(), int attempts = 3, int flags = KMEANS_PP_CENTERS)
  38. //
  39. /**
  40. * The constructor.
  41. *
  42. * SEE: cv::kmeans
  43. * param clusterCount automatically generated
  44. * param termcrit automatically generated
  45. * param attempts automatically generated
  46. * param flags automatically generated
  47. */
  48. public BOWKMeansTrainer(int clusterCount, TermCriteria termcrit, int attempts, int flags) :
  49. base(DisposableObject.ThrowIfNullIntPtr(features2d_BOWKMeansTrainer_BOWKMeansTrainer_10(clusterCount, termcrit.type, termcrit.maxCount, termcrit.epsilon, attempts, flags)))
  50. {
  51. }
  52. /**
  53. * The constructor.
  54. *
  55. * SEE: cv::kmeans
  56. * param clusterCount automatically generated
  57. * param termcrit automatically generated
  58. * param attempts automatically generated
  59. */
  60. public BOWKMeansTrainer(int clusterCount, TermCriteria termcrit, int attempts) :
  61. base(DisposableObject.ThrowIfNullIntPtr(features2d_BOWKMeansTrainer_BOWKMeansTrainer_11(clusterCount, termcrit.type, termcrit.maxCount, termcrit.epsilon, attempts)))
  62. {
  63. }
  64. /**
  65. * The constructor.
  66. *
  67. * SEE: cv::kmeans
  68. * param clusterCount automatically generated
  69. * param termcrit automatically generated
  70. */
  71. public BOWKMeansTrainer(int clusterCount, TermCriteria termcrit) :
  72. base(DisposableObject.ThrowIfNullIntPtr(features2d_BOWKMeansTrainer_BOWKMeansTrainer_12(clusterCount, termcrit.type, termcrit.maxCount, termcrit.epsilon)))
  73. {
  74. }
  75. /**
  76. * The constructor.
  77. *
  78. * SEE: cv::kmeans
  79. * param clusterCount automatically generated
  80. */
  81. public BOWKMeansTrainer(int clusterCount) :
  82. base(DisposableObject.ThrowIfNullIntPtr(features2d_BOWKMeansTrainer_BOWKMeansTrainer_13(clusterCount)))
  83. {
  84. }
  85. //
  86. // C++: Mat cv::BOWKMeansTrainer::cluster()
  87. //
  88. public override Mat cluster()
  89. {
  90. ThrowIfDisposed();
  91. return new Mat(DisposableObject.ThrowIfNullIntPtr(features2d_BOWKMeansTrainer_cluster_10(nativeObj)));
  92. }
  93. //
  94. // C++: Mat cv::BOWKMeansTrainer::cluster(Mat descriptors)
  95. //
  96. public override Mat cluster(Mat descriptors)
  97. {
  98. ThrowIfDisposed();
  99. if (descriptors != null) descriptors.ThrowIfDisposed();
  100. return new Mat(DisposableObject.ThrowIfNullIntPtr(features2d_BOWKMeansTrainer_cluster_11(nativeObj, descriptors.nativeObj)));
  101. }
  102. #if (UNITY_IOS || UNITY_WEBGL) && !UNITY_EDITOR
  103. const string LIBNAME = "__Internal";
  104. #else
  105. const string LIBNAME = "opencvforunity";
  106. #endif
  107. // C++: cv::BOWKMeansTrainer::BOWKMeansTrainer(int clusterCount, TermCriteria termcrit = TermCriteria(), int attempts = 3, int flags = KMEANS_PP_CENTERS)
  108. [DllImport(LIBNAME)]
  109. private static extern IntPtr features2d_BOWKMeansTrainer_BOWKMeansTrainer_10(int clusterCount, int termcrit_type, int termcrit_maxCount, double termcrit_epsilon, int attempts, int flags);
  110. [DllImport(LIBNAME)]
  111. private static extern IntPtr features2d_BOWKMeansTrainer_BOWKMeansTrainer_11(int clusterCount, int termcrit_type, int termcrit_maxCount, double termcrit_epsilon, int attempts);
  112. [DllImport(LIBNAME)]
  113. private static extern IntPtr features2d_BOWKMeansTrainer_BOWKMeansTrainer_12(int clusterCount, int termcrit_type, int termcrit_maxCount, double termcrit_epsilon);
  114. [DllImport(LIBNAME)]
  115. private static extern IntPtr features2d_BOWKMeansTrainer_BOWKMeansTrainer_13(int clusterCount);
  116. // C++: Mat cv::BOWKMeansTrainer::cluster()
  117. [DllImport(LIBNAME)]
  118. private static extern IntPtr features2d_BOWKMeansTrainer_cluster_10(IntPtr nativeObj);
  119. // C++: Mat cv::BOWKMeansTrainer::cluster(Mat descriptors)
  120. [DllImport(LIBNAME)]
  121. private static extern IntPtr features2d_BOWKMeansTrainer_cluster_11(IntPtr nativeObj, IntPtr descriptors_nativeObj);
  122. // native support for java finalize()
  123. [DllImport(LIBNAME)]
  124. private static extern void features2d_BOWKMeansTrainer_delete(IntPtr nativeObj);
  125. }
  126. }