SparsePyrLKOpticalFlow.cs 10 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321
  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 SparsePyrLKOpticalFlow
  9. /**
  10. * Class used for calculating a sparse optical flow.
  11. *
  12. * The class can calculate an optical flow for a sparse feature set using the
  13. * iterative Lucas-Kanade method with pyramids.
  14. *
  15. * SEE: calcOpticalFlowPyrLK
  16. */
  17. public class SparsePyrLKOpticalFlow : SparseOpticalFlow
  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. video_SparsePyrLKOpticalFlow_delete(nativeObj);
  30. nativeObj = IntPtr.Zero;
  31. }
  32. }
  33. finally
  34. {
  35. base.Dispose(disposing);
  36. }
  37. }
  38. protected internal SparsePyrLKOpticalFlow(IntPtr addr) : base(addr) { }
  39. // internal usage only
  40. public static new SparsePyrLKOpticalFlow __fromPtr__(IntPtr addr) { return new SparsePyrLKOpticalFlow(addr); }
  41. //
  42. // C++: Size cv::SparsePyrLKOpticalFlow::getWinSize()
  43. //
  44. public Size getWinSize()
  45. {
  46. ThrowIfDisposed();
  47. double[] tmpArray = new double[2];
  48. video_SparsePyrLKOpticalFlow_getWinSize_10(nativeObj, tmpArray);
  49. Size retVal = new Size(tmpArray);
  50. return retVal;
  51. }
  52. //
  53. // C++: void cv::SparsePyrLKOpticalFlow::setWinSize(Size winSize)
  54. //
  55. public void setWinSize(Size winSize)
  56. {
  57. ThrowIfDisposed();
  58. video_SparsePyrLKOpticalFlow_setWinSize_10(nativeObj, winSize.width, winSize.height);
  59. }
  60. //
  61. // C++: int cv::SparsePyrLKOpticalFlow::getMaxLevel()
  62. //
  63. public int getMaxLevel()
  64. {
  65. ThrowIfDisposed();
  66. return video_SparsePyrLKOpticalFlow_getMaxLevel_10(nativeObj);
  67. }
  68. //
  69. // C++: void cv::SparsePyrLKOpticalFlow::setMaxLevel(int maxLevel)
  70. //
  71. public void setMaxLevel(int maxLevel)
  72. {
  73. ThrowIfDisposed();
  74. video_SparsePyrLKOpticalFlow_setMaxLevel_10(nativeObj, maxLevel);
  75. }
  76. //
  77. // C++: TermCriteria cv::SparsePyrLKOpticalFlow::getTermCriteria()
  78. //
  79. public TermCriteria getTermCriteria()
  80. {
  81. ThrowIfDisposed();
  82. double[] tmpArray = new double[3];
  83. video_SparsePyrLKOpticalFlow_getTermCriteria_10(nativeObj, tmpArray);
  84. TermCriteria retVal = new TermCriteria(tmpArray);
  85. return retVal;
  86. }
  87. //
  88. // C++: void cv::SparsePyrLKOpticalFlow::setTermCriteria(TermCriteria crit)
  89. //
  90. public void setTermCriteria(TermCriteria crit)
  91. {
  92. ThrowIfDisposed();
  93. video_SparsePyrLKOpticalFlow_setTermCriteria_10(nativeObj, crit.type, crit.maxCount, crit.epsilon);
  94. }
  95. //
  96. // C++: int cv::SparsePyrLKOpticalFlow::getFlags()
  97. //
  98. public int getFlags()
  99. {
  100. ThrowIfDisposed();
  101. return video_SparsePyrLKOpticalFlow_getFlags_10(nativeObj);
  102. }
  103. //
  104. // C++: void cv::SparsePyrLKOpticalFlow::setFlags(int flags)
  105. //
  106. public void setFlags(int flags)
  107. {
  108. ThrowIfDisposed();
  109. video_SparsePyrLKOpticalFlow_setFlags_10(nativeObj, flags);
  110. }
  111. //
  112. // C++: double cv::SparsePyrLKOpticalFlow::getMinEigThreshold()
  113. //
  114. public double getMinEigThreshold()
  115. {
  116. ThrowIfDisposed();
  117. return video_SparsePyrLKOpticalFlow_getMinEigThreshold_10(nativeObj);
  118. }
  119. //
  120. // C++: void cv::SparsePyrLKOpticalFlow::setMinEigThreshold(double minEigThreshold)
  121. //
  122. public void setMinEigThreshold(double minEigThreshold)
  123. {
  124. ThrowIfDisposed();
  125. video_SparsePyrLKOpticalFlow_setMinEigThreshold_10(nativeObj, minEigThreshold);
  126. }
  127. //
  128. // C++: static Ptr_SparsePyrLKOpticalFlow cv::SparsePyrLKOpticalFlow::create(Size winSize = Size(21, 21), int maxLevel = 3, TermCriteria crit = TermCriteria(TermCriteria::COUNT+TermCriteria::EPS, 30, 0.01), int flags = 0, double minEigThreshold = 1e-4)
  129. //
  130. public static SparsePyrLKOpticalFlow create(Size winSize, int maxLevel, TermCriteria crit, int flags, double minEigThreshold)
  131. {
  132. return SparsePyrLKOpticalFlow.__fromPtr__(DisposableObject.ThrowIfNullIntPtr(video_SparsePyrLKOpticalFlow_create_10(winSize.width, winSize.height, maxLevel, crit.type, crit.maxCount, crit.epsilon, flags, minEigThreshold)));
  133. }
  134. public static SparsePyrLKOpticalFlow create(Size winSize, int maxLevel, TermCriteria crit, int flags)
  135. {
  136. return SparsePyrLKOpticalFlow.__fromPtr__(DisposableObject.ThrowIfNullIntPtr(video_SparsePyrLKOpticalFlow_create_11(winSize.width, winSize.height, maxLevel, crit.type, crit.maxCount, crit.epsilon, flags)));
  137. }
  138. public static SparsePyrLKOpticalFlow create(Size winSize, int maxLevel, TermCriteria crit)
  139. {
  140. return SparsePyrLKOpticalFlow.__fromPtr__(DisposableObject.ThrowIfNullIntPtr(video_SparsePyrLKOpticalFlow_create_12(winSize.width, winSize.height, maxLevel, crit.type, crit.maxCount, crit.epsilon)));
  141. }
  142. public static SparsePyrLKOpticalFlow create(Size winSize, int maxLevel)
  143. {
  144. return SparsePyrLKOpticalFlow.__fromPtr__(DisposableObject.ThrowIfNullIntPtr(video_SparsePyrLKOpticalFlow_create_13(winSize.width, winSize.height, maxLevel)));
  145. }
  146. public static SparsePyrLKOpticalFlow create(Size winSize)
  147. {
  148. return SparsePyrLKOpticalFlow.__fromPtr__(DisposableObject.ThrowIfNullIntPtr(video_SparsePyrLKOpticalFlow_create_14(winSize.width, winSize.height)));
  149. }
  150. public static SparsePyrLKOpticalFlow create()
  151. {
  152. return SparsePyrLKOpticalFlow.__fromPtr__(DisposableObject.ThrowIfNullIntPtr(video_SparsePyrLKOpticalFlow_create_15()));
  153. }
  154. #if (UNITY_IOS || UNITY_WEBGL) && !UNITY_EDITOR
  155. const string LIBNAME = "__Internal";
  156. #else
  157. const string LIBNAME = "opencvforunity";
  158. #endif
  159. // C++: Size cv::SparsePyrLKOpticalFlow::getWinSize()
  160. [DllImport(LIBNAME)]
  161. private static extern void video_SparsePyrLKOpticalFlow_getWinSize_10(IntPtr nativeObj, double[] retVal);
  162. // C++: void cv::SparsePyrLKOpticalFlow::setWinSize(Size winSize)
  163. [DllImport(LIBNAME)]
  164. private static extern void video_SparsePyrLKOpticalFlow_setWinSize_10(IntPtr nativeObj, double winSize_width, double winSize_height);
  165. // C++: int cv::SparsePyrLKOpticalFlow::getMaxLevel()
  166. [DllImport(LIBNAME)]
  167. private static extern int video_SparsePyrLKOpticalFlow_getMaxLevel_10(IntPtr nativeObj);
  168. // C++: void cv::SparsePyrLKOpticalFlow::setMaxLevel(int maxLevel)
  169. [DllImport(LIBNAME)]
  170. private static extern void video_SparsePyrLKOpticalFlow_setMaxLevel_10(IntPtr nativeObj, int maxLevel);
  171. // C++: TermCriteria cv::SparsePyrLKOpticalFlow::getTermCriteria()
  172. [DllImport(LIBNAME)]
  173. private static extern void video_SparsePyrLKOpticalFlow_getTermCriteria_10(IntPtr nativeObj, double[] retVal);
  174. // C++: void cv::SparsePyrLKOpticalFlow::setTermCriteria(TermCriteria crit)
  175. [DllImport(LIBNAME)]
  176. private static extern void video_SparsePyrLKOpticalFlow_setTermCriteria_10(IntPtr nativeObj, int crit_type, int crit_maxCount, double crit_epsilon);
  177. // C++: int cv::SparsePyrLKOpticalFlow::getFlags()
  178. [DllImport(LIBNAME)]
  179. private static extern int video_SparsePyrLKOpticalFlow_getFlags_10(IntPtr nativeObj);
  180. // C++: void cv::SparsePyrLKOpticalFlow::setFlags(int flags)
  181. [DllImport(LIBNAME)]
  182. private static extern void video_SparsePyrLKOpticalFlow_setFlags_10(IntPtr nativeObj, int flags);
  183. // C++: double cv::SparsePyrLKOpticalFlow::getMinEigThreshold()
  184. [DllImport(LIBNAME)]
  185. private static extern double video_SparsePyrLKOpticalFlow_getMinEigThreshold_10(IntPtr nativeObj);
  186. // C++: void cv::SparsePyrLKOpticalFlow::setMinEigThreshold(double minEigThreshold)
  187. [DllImport(LIBNAME)]
  188. private static extern void video_SparsePyrLKOpticalFlow_setMinEigThreshold_10(IntPtr nativeObj, double minEigThreshold);
  189. // C++: static Ptr_SparsePyrLKOpticalFlow cv::SparsePyrLKOpticalFlow::create(Size winSize = Size(21, 21), int maxLevel = 3, TermCriteria crit = TermCriteria(TermCriteria::COUNT+TermCriteria::EPS, 30, 0.01), int flags = 0, double minEigThreshold = 1e-4)
  190. [DllImport(LIBNAME)]
  191. private static extern IntPtr video_SparsePyrLKOpticalFlow_create_10(double winSize_width, double winSize_height, int maxLevel, int crit_type, int crit_maxCount, double crit_epsilon, int flags, double minEigThreshold);
  192. [DllImport(LIBNAME)]
  193. private static extern IntPtr video_SparsePyrLKOpticalFlow_create_11(double winSize_width, double winSize_height, int maxLevel, int crit_type, int crit_maxCount, double crit_epsilon, int flags);
  194. [DllImport(LIBNAME)]
  195. private static extern IntPtr video_SparsePyrLKOpticalFlow_create_12(double winSize_width, double winSize_height, int maxLevel, int crit_type, int crit_maxCount, double crit_epsilon);
  196. [DllImport(LIBNAME)]
  197. private static extern IntPtr video_SparsePyrLKOpticalFlow_create_13(double winSize_width, double winSize_height, int maxLevel);
  198. [DllImport(LIBNAME)]
  199. private static extern IntPtr video_SparsePyrLKOpticalFlow_create_14(double winSize_width, double winSize_height);
  200. [DllImport(LIBNAME)]
  201. private static extern IntPtr video_SparsePyrLKOpticalFlow_create_15();
  202. // native support for java finalize()
  203. [DllImport(LIBNAME)]
  204. private static extern void video_SparsePyrLKOpticalFlow_delete(IntPtr nativeObj);
  205. }
  206. }