MACE.cs 5.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198
  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.FaceModule
  8. {
  9. // C++: class MACE
  10. //javadoc: MACE
  11. public class MACE : Algorithm
  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. face_MACE_delete(nativeObj);
  22. nativeObj = IntPtr.Zero;
  23. }
  24. } finally {
  25. base.Dispose (disposing);
  26. }
  27. #else
  28. return;
  29. #endif
  30. }
  31. protected internal MACE (IntPtr addr) : base (addr) { }
  32. // internal usage only
  33. public static new MACE __fromPtr__ (IntPtr addr) { return new MACE (addr); }
  34. //
  35. // C++: static Ptr_MACE cv::face::MACE::create(int IMGSIZE = 64)
  36. //
  37. //javadoc: MACE::create(IMGSIZE)
  38. public static MACE create (int IMGSIZE)
  39. {
  40. #if ((UNITY_ANDROID || UNITY_IOS || UNITY_WEBGL) && !UNITY_EDITOR) || UNITY_5 || UNITY_5_3_OR_NEWER
  41. MACE retVal = MACE.__fromPtr__(face_MACE_create_10(IMGSIZE));
  42. return retVal;
  43. #else
  44. return null;
  45. #endif
  46. }
  47. //javadoc: MACE::create()
  48. public static MACE create ()
  49. {
  50. #if ((UNITY_ANDROID || UNITY_IOS || UNITY_WEBGL) && !UNITY_EDITOR) || UNITY_5 || UNITY_5_3_OR_NEWER
  51. MACE retVal = MACE.__fromPtr__(face_MACE_create_11());
  52. return retVal;
  53. #else
  54. return null;
  55. #endif
  56. }
  57. //
  58. // C++: static Ptr_MACE cv::face::MACE::load(String filename, String objname = String())
  59. //
  60. //javadoc: MACE::load(filename, objname)
  61. public static MACE load (string filename, string objname)
  62. {
  63. #if ((UNITY_ANDROID || UNITY_IOS || UNITY_WEBGL) && !UNITY_EDITOR) || UNITY_5 || UNITY_5_3_OR_NEWER
  64. MACE retVal = MACE.__fromPtr__(face_MACE_load_10(filename, objname));
  65. return retVal;
  66. #else
  67. return null;
  68. #endif
  69. }
  70. //javadoc: MACE::load(filename)
  71. public static MACE load (string filename)
  72. {
  73. #if ((UNITY_ANDROID || UNITY_IOS || UNITY_WEBGL) && !UNITY_EDITOR) || UNITY_5 || UNITY_5_3_OR_NEWER
  74. MACE retVal = MACE.__fromPtr__(face_MACE_load_11(filename));
  75. return retVal;
  76. #else
  77. return null;
  78. #endif
  79. }
  80. //
  81. // C++: bool cv::face::MACE::same(Mat query)
  82. //
  83. //javadoc: MACE::same(query)
  84. public bool same (Mat query)
  85. {
  86. ThrowIfDisposed ();
  87. if (query != null) query.ThrowIfDisposed ();
  88. #if ((UNITY_ANDROID || UNITY_IOS || UNITY_WEBGL) && !UNITY_EDITOR) || UNITY_5 || UNITY_5_3_OR_NEWER
  89. bool retVal = face_MACE_same_10(nativeObj, query.nativeObj);
  90. return retVal;
  91. #else
  92. return false;
  93. #endif
  94. }
  95. //
  96. // C++: void cv::face::MACE::salt(String passphrase)
  97. //
  98. //javadoc: MACE::salt(passphrase)
  99. public void salt (string passphrase)
  100. {
  101. ThrowIfDisposed ();
  102. #if ((UNITY_ANDROID || UNITY_IOS || UNITY_WEBGL) && !UNITY_EDITOR) || UNITY_5 || UNITY_5_3_OR_NEWER
  103. face_MACE_salt_10(nativeObj, passphrase);
  104. return;
  105. #else
  106. return;
  107. #endif
  108. }
  109. //
  110. // C++: void cv::face::MACE::train(vector_Mat images)
  111. //
  112. //javadoc: MACE::train(images)
  113. public void train (List<Mat> images)
  114. {
  115. ThrowIfDisposed ();
  116. #if ((UNITY_ANDROID || UNITY_IOS || UNITY_WEBGL) && !UNITY_EDITOR) || UNITY_5 || UNITY_5_3_OR_NEWER
  117. Mat images_mat = Converters.vector_Mat_to_Mat(images);
  118. face_MACE_train_10(nativeObj, images_mat.nativeObj);
  119. return;
  120. #else
  121. return;
  122. #endif
  123. }
  124. #if (UNITY_IOS || UNITY_WEBGL) && !UNITY_EDITOR
  125. const string LIBNAME = "__Internal";
  126. #else
  127. const string LIBNAME = "opencvforunity";
  128. #endif
  129. // C++: static Ptr_MACE cv::face::MACE::create(int IMGSIZE = 64)
  130. [DllImport (LIBNAME)]
  131. private static extern IntPtr face_MACE_create_10 (int IMGSIZE);
  132. [DllImport (LIBNAME)]
  133. private static extern IntPtr face_MACE_create_11 ();
  134. // C++: static Ptr_MACE cv::face::MACE::load(String filename, String objname = String())
  135. [DllImport (LIBNAME)]
  136. private static extern IntPtr face_MACE_load_10 (string filename, string objname);
  137. [DllImport (LIBNAME)]
  138. private static extern IntPtr face_MACE_load_11 (string filename);
  139. // C++: bool cv::face::MACE::same(Mat query)
  140. [DllImport (LIBNAME)]
  141. private static extern bool face_MACE_same_10 (IntPtr nativeObj, IntPtr query_nativeObj);
  142. // C++: void cv::face::MACE::salt(String passphrase)
  143. [DllImport (LIBNAME)]
  144. private static extern void face_MACE_salt_10 (IntPtr nativeObj, string passphrase);
  145. // C++: void cv::face::MACE::train(vector_Mat images)
  146. [DllImport (LIBNAME)]
  147. private static extern void face_MACE_train_10 (IntPtr nativeObj, IntPtr images_mat_nativeObj);
  148. // native support for java finalize()
  149. [DllImport (LIBNAME)]
  150. private static extern void face_MACE_delete (IntPtr nativeObj);
  151. }
  152. }