CascadeClassifier.cs 29 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615
  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.ObjdetectModule {
  8. // C++: class CascadeClassifier
  9. //javadoc: CascadeClassifier
  10. public class CascadeClassifier : DisposableOpenCVObject {
  11. protected override void Dispose(bool disposing) {
  12. #if (UNITY_ANDROID && !UNITY_EDITOR)
  13. try {
  14. if (disposing) {
  15. }
  16. if (IsEnabledDispose) {
  17. if (nativeObj != IntPtr.Zero)
  18. objdetect_CascadeClassifier_delete(nativeObj);
  19. nativeObj = IntPtr.Zero;
  20. }
  21. } finally {
  22. base.Dispose(disposing);
  23. }
  24. #else
  25. return;
  26. #endif
  27. }
  28. protected internal CascadeClassifier(IntPtr addr) : base(addr) { }
  29. public IntPtr getNativeObjAddr() { return nativeObj; }
  30. // internal usage only
  31. public static CascadeClassifier __fromPtr__(IntPtr addr) { return new CascadeClassifier(addr); }
  32. //
  33. // C++: cv::CascadeClassifier::CascadeClassifier(String filename)
  34. //
  35. //javadoc: CascadeClassifier::CascadeClassifier(filename)
  36. public CascadeClassifier(string filename) {
  37. #if (UNITY_ANDROID && !UNITY_EDITOR)
  38. nativeObj = objdetect_CascadeClassifier_CascadeClassifier_10(filename);
  39. return;
  40. #else
  41. return;
  42. #endif
  43. }
  44. //
  45. // C++: cv::CascadeClassifier::CascadeClassifier()
  46. //
  47. //javadoc: CascadeClassifier::CascadeClassifier()
  48. public CascadeClassifier() {
  49. #if (UNITY_ANDROID && !UNITY_EDITOR)
  50. nativeObj = objdetect_CascadeClassifier_CascadeClassifier_11();
  51. return;
  52. #else
  53. return;
  54. #endif
  55. }
  56. //
  57. // C++: Size cv::CascadeClassifier::getOriginalWindowSize()
  58. //
  59. //javadoc: CascadeClassifier::getOriginalWindowSize()
  60. public Size getOriginalWindowSize() {
  61. ThrowIfDisposed();
  62. #if (UNITY_ANDROID && !UNITY_EDITOR)
  63. double[] tmpArray = new double[2];
  64. objdetect_CascadeClassifier_getOriginalWindowSize_10(nativeObj, tmpArray);
  65. Size retVal = new Size(tmpArray);
  66. return retVal;
  67. #else
  68. return null;
  69. #endif
  70. }
  71. //
  72. // C++: static bool cv::CascadeClassifier::convert(String oldcascade, String newcascade)
  73. //
  74. //javadoc: CascadeClassifier::convert(oldcascade, newcascade)
  75. public static bool convert(string oldcascade, string newcascade) {
  76. #if (UNITY_ANDROID && !UNITY_EDITOR)
  77. bool retVal = objdetect_CascadeClassifier_convert_10(oldcascade, newcascade);
  78. return retVal;
  79. #else
  80. return false;
  81. #endif
  82. }
  83. //
  84. // C++: bool cv::CascadeClassifier::empty()
  85. //
  86. //javadoc: CascadeClassifier::empty()
  87. public bool empty() {
  88. ThrowIfDisposed();
  89. #if (UNITY_ANDROID && !UNITY_EDITOR)
  90. bool retVal = objdetect_CascadeClassifier_empty_10(nativeObj);
  91. return retVal;
  92. #else
  93. return false;
  94. #endif
  95. }
  96. //
  97. // C++: bool cv::CascadeClassifier::isOldFormatCascade()
  98. //
  99. //javadoc: CascadeClassifier::isOldFormatCascade()
  100. public bool isOldFormatCascade() {
  101. ThrowIfDisposed();
  102. #if (UNITY_ANDROID && !UNITY_EDITOR)
  103. bool retVal = objdetect_CascadeClassifier_isOldFormatCascade_10(nativeObj);
  104. return retVal;
  105. #else
  106. return false;
  107. #endif
  108. }
  109. //
  110. // C++: bool cv::CascadeClassifier::load(String filename)
  111. //
  112. //javadoc: CascadeClassifier::load(filename)
  113. public bool load(string filename) {
  114. ThrowIfDisposed();
  115. #if (UNITY_ANDROID && !UNITY_EDITOR)
  116. bool retVal = objdetect_CascadeClassifier_load_10(nativeObj, filename);
  117. return retVal;
  118. #else
  119. return false;
  120. #endif
  121. }
  122. //
  123. // C++: bool cv::CascadeClassifier::read(FileNode node)
  124. //
  125. // Unknown type 'FileNode' (I), skipping the function
  126. //
  127. // C++: int cv::CascadeClassifier::getFeatureType()
  128. //
  129. //javadoc: CascadeClassifier::getFeatureType()
  130. public int getFeatureType() {
  131. ThrowIfDisposed();
  132. #if (UNITY_ANDROID && !UNITY_EDITOR)
  133. int retVal = objdetect_CascadeClassifier_getFeatureType_10(nativeObj);
  134. return retVal;
  135. #else
  136. return -1;
  137. #endif
  138. }
  139. //
  140. // C++: void cv::CascadeClassifier::detectMultiScale(Mat image, vector_Rect& objects, double scaleFactor = 1.1, int minNeighbors = 3, int flags = 0, Size minSize = Size(), Size maxSize = Size())
  141. //
  142. //javadoc: CascadeClassifier::detectMultiScale(image, objects, scaleFactor, minNeighbors, flags, minSize, maxSize)
  143. public void detectMultiScale(Mat image, MatOfRect objects, double scaleFactor, int minNeighbors, int flags, Size minSize, Size maxSize) {
  144. ThrowIfDisposed();
  145. if (image != null) image.ThrowIfDisposed();
  146. if (objects != null) objects.ThrowIfDisposed();
  147. #if (UNITY_ANDROID && !UNITY_EDITOR)
  148. Mat objects_mat = objects;
  149. objdetect_CascadeClassifier_detectMultiScale_10(nativeObj, image.nativeObj, objects_mat.nativeObj, scaleFactor, minNeighbors, flags, minSize.width, minSize.height, maxSize.width, maxSize.height);
  150. return;
  151. #else
  152. return;
  153. #endif
  154. }
  155. //javadoc: CascadeClassifier::detectMultiScale(image, objects, scaleFactor, minNeighbors, flags, minSize)
  156. public void detectMultiScale(Mat image, MatOfRect objects, double scaleFactor, int minNeighbors, int flags, Size minSize) {
  157. ThrowIfDisposed();
  158. if (image != null) image.ThrowIfDisposed();
  159. if (objects != null) objects.ThrowIfDisposed();
  160. #if (UNITY_ANDROID && !UNITY_EDITOR)
  161. Mat objects_mat = objects;
  162. objdetect_CascadeClassifier_detectMultiScale_11(nativeObj, image.nativeObj, objects_mat.nativeObj, scaleFactor, minNeighbors, flags, minSize.width, minSize.height);
  163. return;
  164. #else
  165. return;
  166. #endif
  167. }
  168. //javadoc: CascadeClassifier::detectMultiScale(image, objects, scaleFactor, minNeighbors, flags)
  169. public void detectMultiScale(Mat image, MatOfRect objects, double scaleFactor, int minNeighbors, int flags) {
  170. ThrowIfDisposed();
  171. if (image != null) image.ThrowIfDisposed();
  172. if (objects != null) objects.ThrowIfDisposed();
  173. #if (UNITY_ANDROID && !UNITY_EDITOR)
  174. Mat objects_mat = objects;
  175. objdetect_CascadeClassifier_detectMultiScale_12(nativeObj, image.nativeObj, objects_mat.nativeObj, scaleFactor, minNeighbors, flags);
  176. return;
  177. #else
  178. return;
  179. #endif
  180. }
  181. //javadoc: CascadeClassifier::detectMultiScale(image, objects, scaleFactor, minNeighbors)
  182. public void detectMultiScale(Mat image, MatOfRect objects, double scaleFactor, int minNeighbors) {
  183. ThrowIfDisposed();
  184. if (image != null) image.ThrowIfDisposed();
  185. if (objects != null) objects.ThrowIfDisposed();
  186. #if (UNITY_ANDROID && !UNITY_EDITOR)
  187. Mat objects_mat = objects;
  188. objdetect_CascadeClassifier_detectMultiScale_13(nativeObj, image.nativeObj, objects_mat.nativeObj, scaleFactor, minNeighbors);
  189. return;
  190. #else
  191. return;
  192. #endif
  193. }
  194. //javadoc: CascadeClassifier::detectMultiScale(image, objects, scaleFactor)
  195. public void detectMultiScale(Mat image, MatOfRect objects, double scaleFactor) {
  196. ThrowIfDisposed();
  197. if (image != null) image.ThrowIfDisposed();
  198. if (objects != null) objects.ThrowIfDisposed();
  199. #if (UNITY_ANDROID && !UNITY_EDITOR)
  200. Mat objects_mat = objects;
  201. objdetect_CascadeClassifier_detectMultiScale_14(nativeObj, image.nativeObj, objects_mat.nativeObj, scaleFactor);
  202. return;
  203. #else
  204. return;
  205. #endif
  206. }
  207. //javadoc: CascadeClassifier::detectMultiScale(image, objects)
  208. public void detectMultiScale(Mat image, MatOfRect objects) {
  209. ThrowIfDisposed();
  210. if (image != null) image.ThrowIfDisposed();
  211. if (objects != null) objects.ThrowIfDisposed();
  212. #if (UNITY_ANDROID && !UNITY_EDITOR)
  213. Mat objects_mat = objects;
  214. objdetect_CascadeClassifier_detectMultiScale_15(nativeObj, image.nativeObj, objects_mat.nativeObj);
  215. return;
  216. #else
  217. return;
  218. #endif
  219. }
  220. //
  221. // C++: void cv::CascadeClassifier::detectMultiScale(Mat image, vector_Rect& objects, vector_int& numDetections, double scaleFactor = 1.1, int minNeighbors = 3, int flags = 0, Size minSize = Size(), Size maxSize = Size())
  222. //
  223. //javadoc: CascadeClassifier::detectMultiScale2(image, objects, numDetections, scaleFactor, minNeighbors, flags, minSize, maxSize)
  224. public void detectMultiScale2(Mat image, MatOfRect objects, MatOfInt numDetections, double scaleFactor, int minNeighbors, int flags, Size minSize, Size maxSize) {
  225. ThrowIfDisposed();
  226. if (image != null) image.ThrowIfDisposed();
  227. if (objects != null) objects.ThrowIfDisposed();
  228. if (numDetections != null) numDetections.ThrowIfDisposed();
  229. #if (UNITY_ANDROID && !UNITY_EDITOR)
  230. Mat objects_mat = objects;
  231. Mat numDetections_mat = numDetections;
  232. objdetect_CascadeClassifier_detectMultiScale2_10(nativeObj, image.nativeObj, objects_mat.nativeObj, numDetections_mat.nativeObj, scaleFactor, minNeighbors, flags, minSize.width, minSize.height, maxSize.width, maxSize.height);
  233. return;
  234. #else
  235. return;
  236. #endif
  237. }
  238. //javadoc: CascadeClassifier::detectMultiScale2(image, objects, numDetections, scaleFactor, minNeighbors, flags, minSize)
  239. public void detectMultiScale2(Mat image, MatOfRect objects, MatOfInt numDetections, double scaleFactor, int minNeighbors, int flags, Size minSize) {
  240. ThrowIfDisposed();
  241. if (image != null) image.ThrowIfDisposed();
  242. if (objects != null) objects.ThrowIfDisposed();
  243. if (numDetections != null) numDetections.ThrowIfDisposed();
  244. #if (UNITY_ANDROID && !UNITY_EDITOR)
  245. Mat objects_mat = objects;
  246. Mat numDetections_mat = numDetections;
  247. objdetect_CascadeClassifier_detectMultiScale2_11(nativeObj, image.nativeObj, objects_mat.nativeObj, numDetections_mat.nativeObj, scaleFactor, minNeighbors, flags, minSize.width, minSize.height);
  248. return;
  249. #else
  250. return;
  251. #endif
  252. }
  253. //javadoc: CascadeClassifier::detectMultiScale2(image, objects, numDetections, scaleFactor, minNeighbors, flags)
  254. public void detectMultiScale2(Mat image, MatOfRect objects, MatOfInt numDetections, double scaleFactor, int minNeighbors, int flags) {
  255. ThrowIfDisposed();
  256. if (image != null) image.ThrowIfDisposed();
  257. if (objects != null) objects.ThrowIfDisposed();
  258. if (numDetections != null) numDetections.ThrowIfDisposed();
  259. #if (UNITY_ANDROID && !UNITY_EDITOR)
  260. Mat objects_mat = objects;
  261. Mat numDetections_mat = numDetections;
  262. objdetect_CascadeClassifier_detectMultiScale2_12(nativeObj, image.nativeObj, objects_mat.nativeObj, numDetections_mat.nativeObj, scaleFactor, minNeighbors, flags);
  263. return;
  264. #else
  265. return;
  266. #endif
  267. }
  268. //javadoc: CascadeClassifier::detectMultiScale2(image, objects, numDetections, scaleFactor, minNeighbors)
  269. public void detectMultiScale2(Mat image, MatOfRect objects, MatOfInt numDetections, double scaleFactor, int minNeighbors) {
  270. ThrowIfDisposed();
  271. if (image != null) image.ThrowIfDisposed();
  272. if (objects != null) objects.ThrowIfDisposed();
  273. if (numDetections != null) numDetections.ThrowIfDisposed();
  274. #if (UNITY_ANDROID && !UNITY_EDITOR)
  275. Mat objects_mat = objects;
  276. Mat numDetections_mat = numDetections;
  277. objdetect_CascadeClassifier_detectMultiScale2_13(nativeObj, image.nativeObj, objects_mat.nativeObj, numDetections_mat.nativeObj, scaleFactor, minNeighbors);
  278. return;
  279. #else
  280. return;
  281. #endif
  282. }
  283. //javadoc: CascadeClassifier::detectMultiScale2(image, objects, numDetections, scaleFactor)
  284. public void detectMultiScale2(Mat image, MatOfRect objects, MatOfInt numDetections, double scaleFactor) {
  285. ThrowIfDisposed();
  286. if (image != null) image.ThrowIfDisposed();
  287. if (objects != null) objects.ThrowIfDisposed();
  288. if (numDetections != null) numDetections.ThrowIfDisposed();
  289. #if (UNITY_ANDROID && !UNITY_EDITOR)
  290. Mat objects_mat = objects;
  291. Mat numDetections_mat = numDetections;
  292. objdetect_CascadeClassifier_detectMultiScale2_14(nativeObj, image.nativeObj, objects_mat.nativeObj, numDetections_mat.nativeObj, scaleFactor);
  293. return;
  294. #else
  295. return;
  296. #endif
  297. }
  298. //javadoc: CascadeClassifier::detectMultiScale2(image, objects, numDetections)
  299. public void detectMultiScale2(Mat image, MatOfRect objects, MatOfInt numDetections) {
  300. ThrowIfDisposed();
  301. if (image != null) image.ThrowIfDisposed();
  302. if (objects != null) objects.ThrowIfDisposed();
  303. if (numDetections != null) numDetections.ThrowIfDisposed();
  304. #if (UNITY_ANDROID && !UNITY_EDITOR)
  305. Mat objects_mat = objects;
  306. Mat numDetections_mat = numDetections;
  307. objdetect_CascadeClassifier_detectMultiScale2_15(nativeObj, image.nativeObj, objects_mat.nativeObj, numDetections_mat.nativeObj);
  308. return;
  309. #else
  310. return;
  311. #endif
  312. }
  313. //
  314. // C++: void cv::CascadeClassifier::detectMultiScale(Mat image, vector_Rect& objects, vector_int& rejectLevels, vector_double& levelWeights, double scaleFactor = 1.1, int minNeighbors = 3, int flags = 0, Size minSize = Size(), Size maxSize = Size(), bool outputRejectLevels = false)
  315. //
  316. //javadoc: CascadeClassifier::detectMultiScale3(image, objects, rejectLevels, levelWeights, scaleFactor, minNeighbors, flags, minSize, maxSize, outputRejectLevels)
  317. public void detectMultiScale3(Mat image, MatOfRect objects, MatOfInt rejectLevels, MatOfDouble levelWeights, double scaleFactor, int minNeighbors, int flags, Size minSize, Size maxSize, bool outputRejectLevels) {
  318. ThrowIfDisposed();
  319. if (image != null) image.ThrowIfDisposed();
  320. if (objects != null) objects.ThrowIfDisposed();
  321. if (rejectLevels != null) rejectLevels.ThrowIfDisposed();
  322. if (levelWeights != null) levelWeights.ThrowIfDisposed();
  323. #if (UNITY_ANDROID && !UNITY_EDITOR)
  324. Mat objects_mat = objects;
  325. Mat rejectLevels_mat = rejectLevels;
  326. Mat levelWeights_mat = levelWeights;
  327. objdetect_CascadeClassifier_detectMultiScale3_10(nativeObj, image.nativeObj, objects_mat.nativeObj, rejectLevels_mat.nativeObj, levelWeights_mat.nativeObj, scaleFactor, minNeighbors, flags, minSize.width, minSize.height, maxSize.width, maxSize.height, outputRejectLevels);
  328. return;
  329. #else
  330. return;
  331. #endif
  332. }
  333. //javadoc: CascadeClassifier::detectMultiScale3(image, objects, rejectLevels, levelWeights, scaleFactor, minNeighbors, flags, minSize, maxSize)
  334. public void detectMultiScale3(Mat image, MatOfRect objects, MatOfInt rejectLevels, MatOfDouble levelWeights, double scaleFactor, int minNeighbors, int flags, Size minSize, Size maxSize) {
  335. ThrowIfDisposed();
  336. if (image != null) image.ThrowIfDisposed();
  337. if (objects != null) objects.ThrowIfDisposed();
  338. if (rejectLevels != null) rejectLevels.ThrowIfDisposed();
  339. if (levelWeights != null) levelWeights.ThrowIfDisposed();
  340. #if (UNITY_ANDROID && !UNITY_EDITOR)
  341. Mat objects_mat = objects;
  342. Mat rejectLevels_mat = rejectLevels;
  343. Mat levelWeights_mat = levelWeights;
  344. objdetect_CascadeClassifier_detectMultiScale3_11(nativeObj, image.nativeObj, objects_mat.nativeObj, rejectLevels_mat.nativeObj, levelWeights_mat.nativeObj, scaleFactor, minNeighbors, flags, minSize.width, minSize.height, maxSize.width, maxSize.height);
  345. return;
  346. #else
  347. return;
  348. #endif
  349. }
  350. //javadoc: CascadeClassifier::detectMultiScale3(image, objects, rejectLevels, levelWeights, scaleFactor, minNeighbors, flags, minSize)
  351. public void detectMultiScale3(Mat image, MatOfRect objects, MatOfInt rejectLevels, MatOfDouble levelWeights, double scaleFactor, int minNeighbors, int flags, Size minSize) {
  352. ThrowIfDisposed();
  353. if (image != null) image.ThrowIfDisposed();
  354. if (objects != null) objects.ThrowIfDisposed();
  355. if (rejectLevels != null) rejectLevels.ThrowIfDisposed();
  356. if (levelWeights != null) levelWeights.ThrowIfDisposed();
  357. #if (UNITY_ANDROID && !UNITY_EDITOR)
  358. Mat objects_mat = objects;
  359. Mat rejectLevels_mat = rejectLevels;
  360. Mat levelWeights_mat = levelWeights;
  361. objdetect_CascadeClassifier_detectMultiScale3_12(nativeObj, image.nativeObj, objects_mat.nativeObj, rejectLevels_mat.nativeObj, levelWeights_mat.nativeObj, scaleFactor, minNeighbors, flags, minSize.width, minSize.height);
  362. return;
  363. #else
  364. return;
  365. #endif
  366. }
  367. //javadoc: CascadeClassifier::detectMultiScale3(image, objects, rejectLevels, levelWeights, scaleFactor, minNeighbors, flags)
  368. public void detectMultiScale3(Mat image, MatOfRect objects, MatOfInt rejectLevels, MatOfDouble levelWeights, double scaleFactor, int minNeighbors, int flags) {
  369. ThrowIfDisposed();
  370. if (image != null) image.ThrowIfDisposed();
  371. if (objects != null) objects.ThrowIfDisposed();
  372. if (rejectLevels != null) rejectLevels.ThrowIfDisposed();
  373. if (levelWeights != null) levelWeights.ThrowIfDisposed();
  374. #if (UNITY_ANDROID && !UNITY_EDITOR)
  375. Mat objects_mat = objects;
  376. Mat rejectLevels_mat = rejectLevels;
  377. Mat levelWeights_mat = levelWeights;
  378. objdetect_CascadeClassifier_detectMultiScale3_13(nativeObj, image.nativeObj, objects_mat.nativeObj, rejectLevels_mat.nativeObj, levelWeights_mat.nativeObj, scaleFactor, minNeighbors, flags);
  379. return;
  380. #else
  381. return;
  382. #endif
  383. }
  384. //javadoc: CascadeClassifier::detectMultiScale3(image, objects, rejectLevels, levelWeights, scaleFactor, minNeighbors)
  385. public void detectMultiScale3(Mat image, MatOfRect objects, MatOfInt rejectLevels, MatOfDouble levelWeights, double scaleFactor, int minNeighbors) {
  386. ThrowIfDisposed();
  387. if (image != null) image.ThrowIfDisposed();
  388. if (objects != null) objects.ThrowIfDisposed();
  389. if (rejectLevels != null) rejectLevels.ThrowIfDisposed();
  390. if (levelWeights != null) levelWeights.ThrowIfDisposed();
  391. #if (UNITY_ANDROID && !UNITY_EDITOR)
  392. Mat objects_mat = objects;
  393. Mat rejectLevels_mat = rejectLevels;
  394. Mat levelWeights_mat = levelWeights;
  395. objdetect_CascadeClassifier_detectMultiScale3_14(nativeObj, image.nativeObj, objects_mat.nativeObj, rejectLevels_mat.nativeObj, levelWeights_mat.nativeObj, scaleFactor, minNeighbors);
  396. return;
  397. #else
  398. return;
  399. #endif
  400. }
  401. //javadoc: CascadeClassifier::detectMultiScale3(image, objects, rejectLevels, levelWeights, scaleFactor)
  402. public void detectMultiScale3(Mat image, MatOfRect objects, MatOfInt rejectLevels, MatOfDouble levelWeights, double scaleFactor) {
  403. ThrowIfDisposed();
  404. if (image != null) image.ThrowIfDisposed();
  405. if (objects != null) objects.ThrowIfDisposed();
  406. if (rejectLevels != null) rejectLevels.ThrowIfDisposed();
  407. if (levelWeights != null) levelWeights.ThrowIfDisposed();
  408. #if (UNITY_ANDROID && !UNITY_EDITOR)
  409. Mat objects_mat = objects;
  410. Mat rejectLevels_mat = rejectLevels;
  411. Mat levelWeights_mat = levelWeights;
  412. objdetect_CascadeClassifier_detectMultiScale3_15(nativeObj, image.nativeObj, objects_mat.nativeObj, rejectLevels_mat.nativeObj, levelWeights_mat.nativeObj, scaleFactor);
  413. return;
  414. #else
  415. return;
  416. #endif
  417. }
  418. //javadoc: CascadeClassifier::detectMultiScale3(image, objects, rejectLevels, levelWeights)
  419. public void detectMultiScale3(Mat image, MatOfRect objects, MatOfInt rejectLevels, MatOfDouble levelWeights) {
  420. ThrowIfDisposed();
  421. if (image != null) image.ThrowIfDisposed();
  422. if (objects != null) objects.ThrowIfDisposed();
  423. if (rejectLevels != null) rejectLevels.ThrowIfDisposed();
  424. if (levelWeights != null) levelWeights.ThrowIfDisposed();
  425. #if (UNITY_ANDROID && !UNITY_EDITOR)
  426. Mat objects_mat = objects;
  427. Mat rejectLevels_mat = rejectLevels;
  428. Mat levelWeights_mat = levelWeights;
  429. objdetect_CascadeClassifier_detectMultiScale3_16(nativeObj, image.nativeObj, objects_mat.nativeObj, rejectLevels_mat.nativeObj, levelWeights_mat.nativeObj);
  430. return;
  431. #else
  432. return;
  433. #endif
  434. }
  435. #if (UNITY_ANDROID && !UNITY_EDITOR)
  436. const string LIBNAME = "opencvforunity";
  437. // C++: cv::CascadeClassifier::CascadeClassifier(String filename)
  438. [DllImport(LIBNAME)]
  439. private static extern IntPtr objdetect_CascadeClassifier_CascadeClassifier_10(string filename);
  440. // C++: cv::CascadeClassifier::CascadeClassifier()
  441. [DllImport(LIBNAME)]
  442. private static extern IntPtr objdetect_CascadeClassifier_CascadeClassifier_11();
  443. // C++: Size cv::CascadeClassifier::getOriginalWindowSize()
  444. [DllImport(LIBNAME)]
  445. private static extern void objdetect_CascadeClassifier_getOriginalWindowSize_10(IntPtr nativeObj, double[] retVal);
  446. // C++: static bool cv::CascadeClassifier::convert(String oldcascade, String newcascade)
  447. [DllImport(LIBNAME)]
  448. private static extern bool objdetect_CascadeClassifier_convert_10(string oldcascade, string newcascade);
  449. // C++: bool cv::CascadeClassifier::empty()
  450. [DllImport(LIBNAME)]
  451. private static extern bool objdetect_CascadeClassifier_empty_10(IntPtr nativeObj);
  452. // C++: bool cv::CascadeClassifier::isOldFormatCascade()
  453. [DllImport(LIBNAME)]
  454. private static extern bool objdetect_CascadeClassifier_isOldFormatCascade_10(IntPtr nativeObj);
  455. // C++: bool cv::CascadeClassifier::load(String filename)
  456. [DllImport(LIBNAME)]
  457. private static extern bool objdetect_CascadeClassifier_load_10(IntPtr nativeObj, string filename);
  458. // C++: int cv::CascadeClassifier::getFeatureType()
  459. [DllImport(LIBNAME)]
  460. private static extern int objdetect_CascadeClassifier_getFeatureType_10(IntPtr nativeObj);
  461. // C++: void cv::CascadeClassifier::detectMultiScale(Mat image, vector_Rect& objects, double scaleFactor = 1.1, int minNeighbors = 3, int flags = 0, Size minSize = Size(), Size maxSize = Size())
  462. [DllImport(LIBNAME)]
  463. private static extern void objdetect_CascadeClassifier_detectMultiScale_10(IntPtr nativeObj, IntPtr image_nativeObj, IntPtr objects_mat_nativeObj, double scaleFactor, int minNeighbors, int flags, double minSize_width, double minSize_height, double maxSize_width, double maxSize_height);
  464. [DllImport(LIBNAME)]
  465. private static extern void objdetect_CascadeClassifier_detectMultiScale_11(IntPtr nativeObj, IntPtr image_nativeObj, IntPtr objects_mat_nativeObj, double scaleFactor, int minNeighbors, int flags, double minSize_width, double minSize_height);
  466. [DllImport(LIBNAME)]
  467. private static extern void objdetect_CascadeClassifier_detectMultiScale_12(IntPtr nativeObj, IntPtr image_nativeObj, IntPtr objects_mat_nativeObj, double scaleFactor, int minNeighbors, int flags);
  468. [DllImport(LIBNAME)]
  469. private static extern void objdetect_CascadeClassifier_detectMultiScale_13(IntPtr nativeObj, IntPtr image_nativeObj, IntPtr objects_mat_nativeObj, double scaleFactor, int minNeighbors);
  470. [DllImport(LIBNAME)]
  471. private static extern void objdetect_CascadeClassifier_detectMultiScale_14(IntPtr nativeObj, IntPtr image_nativeObj, IntPtr objects_mat_nativeObj, double scaleFactor);
  472. [DllImport(LIBNAME)]
  473. private static extern void objdetect_CascadeClassifier_detectMultiScale_15(IntPtr nativeObj, IntPtr image_nativeObj, IntPtr objects_mat_nativeObj);
  474. // C++: void cv::CascadeClassifier::detectMultiScale(Mat image, vector_Rect& objects, vector_int& numDetections, double scaleFactor = 1.1, int minNeighbors = 3, int flags = 0, Size minSize = Size(), Size maxSize = Size())
  475. [DllImport(LIBNAME)]
  476. private static extern void objdetect_CascadeClassifier_detectMultiScale2_10(IntPtr nativeObj, IntPtr image_nativeObj, IntPtr objects_mat_nativeObj, IntPtr numDetections_mat_nativeObj, double scaleFactor, int minNeighbors, int flags, double minSize_width, double minSize_height, double maxSize_width, double maxSize_height);
  477. [DllImport(LIBNAME)]
  478. private static extern void objdetect_CascadeClassifier_detectMultiScale2_11(IntPtr nativeObj, IntPtr image_nativeObj, IntPtr objects_mat_nativeObj, IntPtr numDetections_mat_nativeObj, double scaleFactor, int minNeighbors, int flags, double minSize_width, double minSize_height);
  479. [DllImport(LIBNAME)]
  480. private static extern void objdetect_CascadeClassifier_detectMultiScale2_12(IntPtr nativeObj, IntPtr image_nativeObj, IntPtr objects_mat_nativeObj, IntPtr numDetections_mat_nativeObj, double scaleFactor, int minNeighbors, int flags);
  481. [DllImport(LIBNAME)]
  482. private static extern void objdetect_CascadeClassifier_detectMultiScale2_13(IntPtr nativeObj, IntPtr image_nativeObj, IntPtr objects_mat_nativeObj, IntPtr numDetections_mat_nativeObj, double scaleFactor, int minNeighbors);
  483. [DllImport(LIBNAME)]
  484. private static extern void objdetect_CascadeClassifier_detectMultiScale2_14(IntPtr nativeObj, IntPtr image_nativeObj, IntPtr objects_mat_nativeObj, IntPtr numDetections_mat_nativeObj, double scaleFactor);
  485. [DllImport(LIBNAME)]
  486. private static extern void objdetect_CascadeClassifier_detectMultiScale2_15(IntPtr nativeObj, IntPtr image_nativeObj, IntPtr objects_mat_nativeObj, IntPtr numDetections_mat_nativeObj);
  487. // C++: void cv::CascadeClassifier::detectMultiScale(Mat image, vector_Rect& objects, vector_int& rejectLevels, vector_double& levelWeights, double scaleFactor = 1.1, int minNeighbors = 3, int flags = 0, Size minSize = Size(), Size maxSize = Size(), bool outputRejectLevels = false)
  488. [DllImport(LIBNAME)]
  489. private static extern void objdetect_CascadeClassifier_detectMultiScale3_10(IntPtr nativeObj, IntPtr image_nativeObj, IntPtr objects_mat_nativeObj, IntPtr rejectLevels_mat_nativeObj, IntPtr levelWeights_mat_nativeObj, double scaleFactor, int minNeighbors, int flags, double minSize_width, double minSize_height, double maxSize_width, double maxSize_height, bool outputRejectLevels);
  490. [DllImport(LIBNAME)]
  491. private static extern void objdetect_CascadeClassifier_detectMultiScale3_11(IntPtr nativeObj, IntPtr image_nativeObj, IntPtr objects_mat_nativeObj, IntPtr rejectLevels_mat_nativeObj, IntPtr levelWeights_mat_nativeObj, double scaleFactor, int minNeighbors, int flags, double minSize_width, double minSize_height, double maxSize_width, double maxSize_height);
  492. [DllImport(LIBNAME)]
  493. private static extern void objdetect_CascadeClassifier_detectMultiScale3_12(IntPtr nativeObj, IntPtr image_nativeObj, IntPtr objects_mat_nativeObj, IntPtr rejectLevels_mat_nativeObj, IntPtr levelWeights_mat_nativeObj, double scaleFactor, int minNeighbors, int flags, double minSize_width, double minSize_height);
  494. [DllImport(LIBNAME)]
  495. private static extern void objdetect_CascadeClassifier_detectMultiScale3_13(IntPtr nativeObj, IntPtr image_nativeObj, IntPtr objects_mat_nativeObj, IntPtr rejectLevels_mat_nativeObj, IntPtr levelWeights_mat_nativeObj, double scaleFactor, int minNeighbors, int flags);
  496. [DllImport(LIBNAME)]
  497. private static extern void objdetect_CascadeClassifier_detectMultiScale3_14(IntPtr nativeObj, IntPtr image_nativeObj, IntPtr objects_mat_nativeObj, IntPtr rejectLevels_mat_nativeObj, IntPtr levelWeights_mat_nativeObj, double scaleFactor, int minNeighbors);
  498. [DllImport(LIBNAME)]
  499. private static extern void objdetect_CascadeClassifier_detectMultiScale3_15(IntPtr nativeObj, IntPtr image_nativeObj, IntPtr objects_mat_nativeObj, IntPtr rejectLevels_mat_nativeObj, IntPtr levelWeights_mat_nativeObj, double scaleFactor);
  500. [DllImport(LIBNAME)]
  501. private static extern void objdetect_CascadeClassifier_detectMultiScale3_16(IntPtr nativeObj, IntPtr image_nativeObj, IntPtr objects_mat_nativeObj, IntPtr rejectLevels_mat_nativeObj, IntPtr levelWeights_mat_nativeObj);
  502. // native support for java finalize()
  503. [DllImport(LIBNAME)]
  504. private static extern void objdetect_CascadeClassifier_delete(IntPtr nativeObj);
  505. #endif
  506. }
  507. }