MSER.cs 16 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463
  1. 
  2. using OpenCVForUnity.CoreModule;
  3. using OpenCVForUnity.UtilsModule;
  4. using System;
  5. using System.Collections.Generic;
  6. using System.Runtime.InteropServices;
  7. namespace OpenCVForUnity.Features2dModule
  8. {
  9. // C++: class MSER
  10. //javadoc: MSER
  11. public class MSER : Feature2D
  12. {
  13. protected override void Dispose (bool disposing)
  14. {
  15. #if ((UNITY_ANDROID || UNITY_IOS || UNITY_WEBGL) && !UNITY_EDITOR) || UNITY_5 || UNITY_5_3_OR_NEWER
  16. try {
  17. if (disposing) {
  18. }
  19. if (IsEnabledDispose) {
  20. if (nativeObj != IntPtr.Zero)
  21. features2d_MSER_delete (nativeObj);
  22. nativeObj = IntPtr.Zero;
  23. }
  24. } finally {
  25. base.Dispose (disposing);
  26. }
  27. #else
  28. return;
  29. #endif
  30. }
  31. protected internal MSER (IntPtr addr)
  32. : base (addr)
  33. {
  34. }
  35. // internal usage only
  36. public static new MSER __fromPtr__ (IntPtr addr)
  37. {
  38. return new MSER (addr);
  39. }
  40. //
  41. // C++: static Ptr_MSER cv::MSER::create(int _delta = 5, int _min_area = 60, int _max_area = 14400, double _max_variation = 0.25, double _min_diversity = .2, int _max_evolution = 200, double _area_threshold = 1.01, double _min_margin = 0.003, int _edge_blur_size = 5)
  42. //
  43. //javadoc: MSER::create(_delta, _min_area, _max_area, _max_variation, _min_diversity, _max_evolution, _area_threshold, _min_margin, _edge_blur_size)
  44. public static MSER create (int _delta, int _min_area, int _max_area, double _max_variation, double _min_diversity, int _max_evolution, double _area_threshold, double _min_margin, int _edge_blur_size)
  45. {
  46. #if ((UNITY_ANDROID || UNITY_IOS || UNITY_WEBGL) && !UNITY_EDITOR) || UNITY_5 || UNITY_5_3_OR_NEWER
  47. MSER retVal = MSER.__fromPtr__ (features2d_MSER_create_10 (_delta, _min_area, _max_area, _max_variation, _min_diversity, _max_evolution, _area_threshold, _min_margin, _edge_blur_size));
  48. return retVal;
  49. #else
  50. return null;
  51. #endif
  52. }
  53. //javadoc: MSER::create(_delta, _min_area, _max_area, _max_variation, _min_diversity, _max_evolution, _area_threshold, _min_margin)
  54. public static MSER create (int _delta, int _min_area, int _max_area, double _max_variation, double _min_diversity, int _max_evolution, double _area_threshold, double _min_margin)
  55. {
  56. #if ((UNITY_ANDROID || UNITY_IOS || UNITY_WEBGL) && !UNITY_EDITOR) || UNITY_5 || UNITY_5_3_OR_NEWER
  57. MSER retVal = MSER.__fromPtr__ (features2d_MSER_create_11 (_delta, _min_area, _max_area, _max_variation, _min_diversity, _max_evolution, _area_threshold, _min_margin));
  58. return retVal;
  59. #else
  60. return null;
  61. #endif
  62. }
  63. //javadoc: MSER::create(_delta, _min_area, _max_area, _max_variation, _min_diversity, _max_evolution, _area_threshold)
  64. public static MSER create (int _delta, int _min_area, int _max_area, double _max_variation, double _min_diversity, int _max_evolution, double _area_threshold)
  65. {
  66. #if ((UNITY_ANDROID || UNITY_IOS || UNITY_WEBGL) && !UNITY_EDITOR) || UNITY_5 || UNITY_5_3_OR_NEWER
  67. MSER retVal = MSER.__fromPtr__ (features2d_MSER_create_12 (_delta, _min_area, _max_area, _max_variation, _min_diversity, _max_evolution, _area_threshold));
  68. return retVal;
  69. #else
  70. return null;
  71. #endif
  72. }
  73. //javadoc: MSER::create(_delta, _min_area, _max_area, _max_variation, _min_diversity, _max_evolution)
  74. public static MSER create (int _delta, int _min_area, int _max_area, double _max_variation, double _min_diversity, int _max_evolution)
  75. {
  76. #if ((UNITY_ANDROID || UNITY_IOS || UNITY_WEBGL) && !UNITY_EDITOR) || UNITY_5 || UNITY_5_3_OR_NEWER
  77. MSER retVal = MSER.__fromPtr__ (features2d_MSER_create_13 (_delta, _min_area, _max_area, _max_variation, _min_diversity, _max_evolution));
  78. return retVal;
  79. #else
  80. return null;
  81. #endif
  82. }
  83. //javadoc: MSER::create(_delta, _min_area, _max_area, _max_variation, _min_diversity)
  84. public static MSER create (int _delta, int _min_area, int _max_area, double _max_variation, double _min_diversity)
  85. {
  86. #if ((UNITY_ANDROID || UNITY_IOS || UNITY_WEBGL) && !UNITY_EDITOR) || UNITY_5 || UNITY_5_3_OR_NEWER
  87. MSER retVal = MSER.__fromPtr__ (features2d_MSER_create_14 (_delta, _min_area, _max_area, _max_variation, _min_diversity));
  88. return retVal;
  89. #else
  90. return null;
  91. #endif
  92. }
  93. //javadoc: MSER::create(_delta, _min_area, _max_area, _max_variation)
  94. public static MSER create (int _delta, int _min_area, int _max_area, double _max_variation)
  95. {
  96. #if ((UNITY_ANDROID || UNITY_IOS || UNITY_WEBGL) && !UNITY_EDITOR) || UNITY_5 || UNITY_5_3_OR_NEWER
  97. MSER retVal = MSER.__fromPtr__ (features2d_MSER_create_15 (_delta, _min_area, _max_area, _max_variation));
  98. return retVal;
  99. #else
  100. return null;
  101. #endif
  102. }
  103. //javadoc: MSER::create(_delta, _min_area, _max_area)
  104. public static MSER create (int _delta, int _min_area, int _max_area)
  105. {
  106. #if ((UNITY_ANDROID || UNITY_IOS || UNITY_WEBGL) && !UNITY_EDITOR) || UNITY_5 || UNITY_5_3_OR_NEWER
  107. MSER retVal = MSER.__fromPtr__ (features2d_MSER_create_16 (_delta, _min_area, _max_area));
  108. return retVal;
  109. #else
  110. return null;
  111. #endif
  112. }
  113. //javadoc: MSER::create(_delta, _min_area)
  114. public static MSER create (int _delta, int _min_area)
  115. {
  116. #if ((UNITY_ANDROID || UNITY_IOS || UNITY_WEBGL) && !UNITY_EDITOR) || UNITY_5 || UNITY_5_3_OR_NEWER
  117. MSER retVal = MSER.__fromPtr__ (features2d_MSER_create_17 (_delta, _min_area));
  118. return retVal;
  119. #else
  120. return null;
  121. #endif
  122. }
  123. //javadoc: MSER::create(_delta)
  124. public static MSER create (int _delta)
  125. {
  126. #if ((UNITY_ANDROID || UNITY_IOS || UNITY_WEBGL) && !UNITY_EDITOR) || UNITY_5 || UNITY_5_3_OR_NEWER
  127. MSER retVal = MSER.__fromPtr__ (features2d_MSER_create_18 (_delta));
  128. return retVal;
  129. #else
  130. return null;
  131. #endif
  132. }
  133. //javadoc: MSER::create()
  134. public static MSER create ()
  135. {
  136. #if ((UNITY_ANDROID || UNITY_IOS || UNITY_WEBGL) && !UNITY_EDITOR) || UNITY_5 || UNITY_5_3_OR_NEWER
  137. MSER retVal = MSER.__fromPtr__ (features2d_MSER_create_19 ());
  138. return retVal;
  139. #else
  140. return null;
  141. #endif
  142. }
  143. //
  144. // C++: String cv::MSER::getDefaultName()
  145. //
  146. //javadoc: MSER::getDefaultName()
  147. public override string getDefaultName ()
  148. {
  149. ThrowIfDisposed ();
  150. #if ((UNITY_ANDROID || UNITY_IOS || UNITY_WEBGL) && !UNITY_EDITOR) || UNITY_5 || UNITY_5_3_OR_NEWER
  151. string retVal = Marshal.PtrToStringAnsi (features2d_MSER_getDefaultName_10 (nativeObj));
  152. return retVal;
  153. #else
  154. return null;
  155. #endif
  156. }
  157. //
  158. // C++: bool cv::MSER::getPass2Only()
  159. //
  160. //javadoc: MSER::getPass2Only()
  161. public bool getPass2Only ()
  162. {
  163. ThrowIfDisposed ();
  164. #if ((UNITY_ANDROID || UNITY_IOS || UNITY_WEBGL) && !UNITY_EDITOR) || UNITY_5 || UNITY_5_3_OR_NEWER
  165. bool retVal = features2d_MSER_getPass2Only_10 (nativeObj);
  166. return retVal;
  167. #else
  168. return false;
  169. #endif
  170. }
  171. //
  172. // C++: int cv::MSER::getDelta()
  173. //
  174. //javadoc: MSER::getDelta()
  175. public int getDelta ()
  176. {
  177. ThrowIfDisposed ();
  178. #if ((UNITY_ANDROID || UNITY_IOS || UNITY_WEBGL) && !UNITY_EDITOR) || UNITY_5 || UNITY_5_3_OR_NEWER
  179. int retVal = features2d_MSER_getDelta_10 (nativeObj);
  180. return retVal;
  181. #else
  182. return -1;
  183. #endif
  184. }
  185. //
  186. // C++: int cv::MSER::getMaxArea()
  187. //
  188. //javadoc: MSER::getMaxArea()
  189. public int getMaxArea ()
  190. {
  191. ThrowIfDisposed ();
  192. #if ((UNITY_ANDROID || UNITY_IOS || UNITY_WEBGL) && !UNITY_EDITOR) || UNITY_5 || UNITY_5_3_OR_NEWER
  193. int retVal = features2d_MSER_getMaxArea_10 (nativeObj);
  194. return retVal;
  195. #else
  196. return -1;
  197. #endif
  198. }
  199. //
  200. // C++: int cv::MSER::getMinArea()
  201. //
  202. //javadoc: MSER::getMinArea()
  203. public int getMinArea ()
  204. {
  205. ThrowIfDisposed ();
  206. #if ((UNITY_ANDROID || UNITY_IOS || UNITY_WEBGL) && !UNITY_EDITOR) || UNITY_5 || UNITY_5_3_OR_NEWER
  207. int retVal = features2d_MSER_getMinArea_10 (nativeObj);
  208. return retVal;
  209. #else
  210. return -1;
  211. #endif
  212. }
  213. //
  214. // C++: void cv::MSER::detectRegions(Mat image, vector_vector_Point& msers, vector_Rect& bboxes)
  215. //
  216. //javadoc: MSER::detectRegions(image, msers, bboxes)
  217. public void detectRegions (Mat image, List<MatOfPoint> msers, MatOfRect bboxes)
  218. {
  219. ThrowIfDisposed ();
  220. if (image != null)
  221. image.ThrowIfDisposed ();
  222. if (bboxes != null)
  223. bboxes.ThrowIfDisposed ();
  224. #if ((UNITY_ANDROID || UNITY_IOS || UNITY_WEBGL) && !UNITY_EDITOR) || UNITY_5 || UNITY_5_3_OR_NEWER
  225. Mat msers_mat = new Mat ();
  226. Mat bboxes_mat = bboxes;
  227. features2d_MSER_detectRegions_10 (nativeObj, image.nativeObj, msers_mat.nativeObj, bboxes_mat.nativeObj);
  228. Converters.Mat_to_vector_vector_Point (msers_mat, msers);
  229. msers_mat.release ();
  230. return;
  231. #else
  232. return;
  233. #endif
  234. }
  235. //
  236. // C++: void cv::MSER::setDelta(int delta)
  237. //
  238. //javadoc: MSER::setDelta(delta)
  239. public void setDelta (int delta)
  240. {
  241. ThrowIfDisposed ();
  242. #if ((UNITY_ANDROID || UNITY_IOS || UNITY_WEBGL) && !UNITY_EDITOR) || UNITY_5 || UNITY_5_3_OR_NEWER
  243. features2d_MSER_setDelta_10 (nativeObj, delta);
  244. return;
  245. #else
  246. return;
  247. #endif
  248. }
  249. //
  250. // C++: void cv::MSER::setMaxArea(int maxArea)
  251. //
  252. //javadoc: MSER::setMaxArea(maxArea)
  253. public void setMaxArea (int maxArea)
  254. {
  255. ThrowIfDisposed ();
  256. #if ((UNITY_ANDROID || UNITY_IOS || UNITY_WEBGL) && !UNITY_EDITOR) || UNITY_5 || UNITY_5_3_OR_NEWER
  257. features2d_MSER_setMaxArea_10 (nativeObj, maxArea);
  258. return;
  259. #else
  260. return;
  261. #endif
  262. }
  263. //
  264. // C++: void cv::MSER::setMinArea(int minArea)
  265. //
  266. //javadoc: MSER::setMinArea(minArea)
  267. public void setMinArea (int minArea)
  268. {
  269. ThrowIfDisposed ();
  270. #if ((UNITY_ANDROID || UNITY_IOS || UNITY_WEBGL) && !UNITY_EDITOR) || UNITY_5 || UNITY_5_3_OR_NEWER
  271. features2d_MSER_setMinArea_10 (nativeObj, minArea);
  272. return;
  273. #else
  274. return;
  275. #endif
  276. }
  277. //
  278. // C++: void cv::MSER::setPass2Only(bool f)
  279. //
  280. //javadoc: MSER::setPass2Only(f)
  281. public void setPass2Only (bool f)
  282. {
  283. ThrowIfDisposed ();
  284. #if ((UNITY_ANDROID || UNITY_IOS || UNITY_WEBGL) && !UNITY_EDITOR) || UNITY_5 || UNITY_5_3_OR_NEWER
  285. features2d_MSER_setPass2Only_10 (nativeObj, f);
  286. return;
  287. #else
  288. return;
  289. #endif
  290. }
  291. #if (UNITY_IOS || UNITY_WEBGL) && !UNITY_EDITOR
  292. const string LIBNAME = "__Internal";
  293. #else
  294. const string LIBNAME = "opencvforunity";
  295. #endif
  296. // C++: static Ptr_MSER cv::MSER::create(int _delta = 5, int _min_area = 60, int _max_area = 14400, double _max_variation = 0.25, double _min_diversity = .2, int _max_evolution = 200, double _area_threshold = 1.01, double _min_margin = 0.003, int _edge_blur_size = 5)
  297. [DllImport (LIBNAME)]
  298. private static extern IntPtr features2d_MSER_create_10 (int _delta, int _min_area, int _max_area, double _max_variation, double _min_diversity, int _max_evolution, double _area_threshold, double _min_margin, int _edge_blur_size);
  299. [DllImport (LIBNAME)]
  300. private static extern IntPtr features2d_MSER_create_11 (int _delta, int _min_area, int _max_area, double _max_variation, double _min_diversity, int _max_evolution, double _area_threshold, double _min_margin);
  301. [DllImport (LIBNAME)]
  302. private static extern IntPtr features2d_MSER_create_12 (int _delta, int _min_area, int _max_area, double _max_variation, double _min_diversity, int _max_evolution, double _area_threshold);
  303. [DllImport (LIBNAME)]
  304. private static extern IntPtr features2d_MSER_create_13 (int _delta, int _min_area, int _max_area, double _max_variation, double _min_diversity, int _max_evolution);
  305. [DllImport (LIBNAME)]
  306. private static extern IntPtr features2d_MSER_create_14 (int _delta, int _min_area, int _max_area, double _max_variation, double _min_diversity);
  307. [DllImport (LIBNAME)]
  308. private static extern IntPtr features2d_MSER_create_15 (int _delta, int _min_area, int _max_area, double _max_variation);
  309. [DllImport (LIBNAME)]
  310. private static extern IntPtr features2d_MSER_create_16 (int _delta, int _min_area, int _max_area);
  311. [DllImport (LIBNAME)]
  312. private static extern IntPtr features2d_MSER_create_17 (int _delta, int _min_area);
  313. [DllImport (LIBNAME)]
  314. private static extern IntPtr features2d_MSER_create_18 (int _delta);
  315. [DllImport (LIBNAME)]
  316. private static extern IntPtr features2d_MSER_create_19 ();
  317. // C++: String cv::MSER::getDefaultName()
  318. [DllImport (LIBNAME)]
  319. private static extern IntPtr features2d_MSER_getDefaultName_10 (IntPtr nativeObj);
  320. // C++: bool cv::MSER::getPass2Only()
  321. [DllImport (LIBNAME)]
  322. private static extern bool features2d_MSER_getPass2Only_10 (IntPtr nativeObj);
  323. // C++: int cv::MSER::getDelta()
  324. [DllImport (LIBNAME)]
  325. private static extern int features2d_MSER_getDelta_10 (IntPtr nativeObj);
  326. // C++: int cv::MSER::getMaxArea()
  327. [DllImport (LIBNAME)]
  328. private static extern int features2d_MSER_getMaxArea_10 (IntPtr nativeObj);
  329. // C++: int cv::MSER::getMinArea()
  330. [DllImport (LIBNAME)]
  331. private static extern int features2d_MSER_getMinArea_10 (IntPtr nativeObj);
  332. // C++: void cv::MSER::detectRegions(Mat image, vector_vector_Point& msers, vector_Rect& bboxes)
  333. [DllImport (LIBNAME)]
  334. private static extern void features2d_MSER_detectRegions_10 (IntPtr nativeObj, IntPtr image_nativeObj, IntPtr msers_mat_nativeObj, IntPtr bboxes_mat_nativeObj);
  335. // C++: void cv::MSER::setDelta(int delta)
  336. [DllImport (LIBNAME)]
  337. private static extern void features2d_MSER_setDelta_10 (IntPtr nativeObj, int delta);
  338. // C++: void cv::MSER::setMaxArea(int maxArea)
  339. [DllImport (LIBNAME)]
  340. private static extern void features2d_MSER_setMaxArea_10 (IntPtr nativeObj, int maxArea);
  341. // C++: void cv::MSER::setMinArea(int minArea)
  342. [DllImport (LIBNAME)]
  343. private static extern void features2d_MSER_setMinArea_10 (IntPtr nativeObj, int minArea);
  344. // C++: void cv::MSER::setPass2Only(bool f)
  345. [DllImport (LIBNAME)]
  346. private static extern void features2d_MSER_setPass2Only_10 (IntPtr nativeObj, bool f);
  347. // native support for java finalize()
  348. [DllImport (LIBNAME)]
  349. private static extern void features2d_MSER_delete (IntPtr nativeObj);
  350. }
  351. }