ShapeTransformer.cs 7.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189
  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.ShapeModule {
  8. // C++: class ShapeTransformer
  9. //javadoc: ShapeTransformer
  10. public class ShapeTransformer : Algorithm {
  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. shape_ShapeTransformer_delete(nativeObj);
  19. nativeObj = IntPtr.Zero;
  20. }
  21. } finally {
  22. base.Dispose(disposing);
  23. }
  24. #else
  25. return;
  26. #endif
  27. }
  28. protected internal ShapeTransformer(IntPtr addr) : base(addr) { }
  29. // internal usage only
  30. public static new ShapeTransformer __fromPtr__(IntPtr addr) { return new ShapeTransformer(addr); }
  31. //
  32. // C++: float cv::ShapeTransformer::applyTransformation(Mat input, Mat& output = Mat())
  33. //
  34. //javadoc: ShapeTransformer::applyTransformation(input, output)
  35. public float applyTransformation(Mat input, Mat output) {
  36. ThrowIfDisposed();
  37. if (input != null) input.ThrowIfDisposed();
  38. if (output != null) output.ThrowIfDisposed();
  39. #if (UNITY_ANDROID && !UNITY_EDITOR)
  40. float retVal = shape_ShapeTransformer_applyTransformation_10(nativeObj, input.nativeObj, output.nativeObj);
  41. return retVal;
  42. #else
  43. return -1;
  44. #endif
  45. }
  46. //javadoc: ShapeTransformer::applyTransformation(input)
  47. public float applyTransformation(Mat input) {
  48. ThrowIfDisposed();
  49. if (input != null) input.ThrowIfDisposed();
  50. #if (UNITY_ANDROID && !UNITY_EDITOR)
  51. float retVal = shape_ShapeTransformer_applyTransformation_11(nativeObj, input.nativeObj);
  52. return retVal;
  53. #else
  54. return -1;
  55. #endif
  56. }
  57. //
  58. // C++: void cv::ShapeTransformer::estimateTransformation(Mat transformingShape, Mat targetShape, vector_DMatch matches)
  59. //
  60. //javadoc: ShapeTransformer::estimateTransformation(transformingShape, targetShape, matches)
  61. public void estimateTransformation(Mat transformingShape, Mat targetShape, MatOfDMatch matches) {
  62. ThrowIfDisposed();
  63. if (transformingShape != null) transformingShape.ThrowIfDisposed();
  64. if (targetShape != null) targetShape.ThrowIfDisposed();
  65. if (matches != null) matches.ThrowIfDisposed();
  66. #if (UNITY_ANDROID && !UNITY_EDITOR)
  67. Mat matches_mat = matches;
  68. shape_ShapeTransformer_estimateTransformation_10(nativeObj, transformingShape.nativeObj, targetShape.nativeObj, matches_mat.nativeObj);
  69. return;
  70. #else
  71. return;
  72. #endif
  73. }
  74. //
  75. // C++: void cv::ShapeTransformer::warpImage(Mat transformingImage, Mat& output, int flags = INTER_LINEAR, int borderMode = BORDER_CONSTANT, Scalar borderValue = Scalar())
  76. //
  77. //javadoc: ShapeTransformer::warpImage(transformingImage, output, flags, borderMode, borderValue)
  78. public void warpImage(Mat transformingImage, Mat output, int flags, int borderMode, Scalar borderValue) {
  79. ThrowIfDisposed();
  80. if (transformingImage != null) transformingImage.ThrowIfDisposed();
  81. if (output != null) output.ThrowIfDisposed();
  82. #if (UNITY_ANDROID && !UNITY_EDITOR)
  83. shape_ShapeTransformer_warpImage_10(nativeObj, transformingImage.nativeObj, output.nativeObj, flags, borderMode, borderValue.val[0], borderValue.val[1], borderValue.val[2], borderValue.val[3]);
  84. return;
  85. #else
  86. return;
  87. #endif
  88. }
  89. //javadoc: ShapeTransformer::warpImage(transformingImage, output, flags, borderMode)
  90. public void warpImage(Mat transformingImage, Mat output, int flags, int borderMode) {
  91. ThrowIfDisposed();
  92. if (transformingImage != null) transformingImage.ThrowIfDisposed();
  93. if (output != null) output.ThrowIfDisposed();
  94. #if (UNITY_ANDROID && !UNITY_EDITOR)
  95. shape_ShapeTransformer_warpImage_11(nativeObj, transformingImage.nativeObj, output.nativeObj, flags, borderMode);
  96. return;
  97. #else
  98. return;
  99. #endif
  100. }
  101. //javadoc: ShapeTransformer::warpImage(transformingImage, output, flags)
  102. public void warpImage(Mat transformingImage, Mat output, int flags) {
  103. ThrowIfDisposed();
  104. if (transformingImage != null) transformingImage.ThrowIfDisposed();
  105. if (output != null) output.ThrowIfDisposed();
  106. #if (UNITY_ANDROID && !UNITY_EDITOR)
  107. shape_ShapeTransformer_warpImage_12(nativeObj, transformingImage.nativeObj, output.nativeObj, flags);
  108. return;
  109. #else
  110. return;
  111. #endif
  112. }
  113. //javadoc: ShapeTransformer::warpImage(transformingImage, output)
  114. public void warpImage(Mat transformingImage, Mat output) {
  115. ThrowIfDisposed();
  116. if (transformingImage != null) transformingImage.ThrowIfDisposed();
  117. if (output != null) output.ThrowIfDisposed();
  118. #if (UNITY_ANDROID && !UNITY_EDITOR)
  119. shape_ShapeTransformer_warpImage_13(nativeObj, transformingImage.nativeObj, output.nativeObj);
  120. return;
  121. #else
  122. return;
  123. #endif
  124. }
  125. #if (UNITY_ANDROID && !UNITY_EDITOR)
  126. const string LIBNAME = "opencvforunity";
  127. // C++: float cv::ShapeTransformer::applyTransformation(Mat input, Mat& output = Mat())
  128. [DllImport(LIBNAME)]
  129. private static extern float shape_ShapeTransformer_applyTransformation_10(IntPtr nativeObj, IntPtr input_nativeObj, IntPtr output_nativeObj);
  130. [DllImport(LIBNAME)]
  131. private static extern float shape_ShapeTransformer_applyTransformation_11(IntPtr nativeObj, IntPtr input_nativeObj);
  132. // C++: void cv::ShapeTransformer::estimateTransformation(Mat transformingShape, Mat targetShape, vector_DMatch matches)
  133. [DllImport(LIBNAME)]
  134. private static extern void shape_ShapeTransformer_estimateTransformation_10(IntPtr nativeObj, IntPtr transformingShape_nativeObj, IntPtr targetShape_nativeObj, IntPtr matches_mat_nativeObj);
  135. // C++: void cv::ShapeTransformer::warpImage(Mat transformingImage, Mat& output, int flags = INTER_LINEAR, int borderMode = BORDER_CONSTANT, Scalar borderValue = Scalar())
  136. [DllImport(LIBNAME)]
  137. private static extern void shape_ShapeTransformer_warpImage_10(IntPtr nativeObj, IntPtr transformingImage_nativeObj, IntPtr output_nativeObj, int flags, int borderMode, double borderValue_val0, double borderValue_val1, double borderValue_val2, double borderValue_val3);
  138. [DllImport(LIBNAME)]
  139. private static extern void shape_ShapeTransformer_warpImage_11(IntPtr nativeObj, IntPtr transformingImage_nativeObj, IntPtr output_nativeObj, int flags, int borderMode);
  140. [DllImport(LIBNAME)]
  141. private static extern void shape_ShapeTransformer_warpImage_12(IntPtr nativeObj, IntPtr transformingImage_nativeObj, IntPtr output_nativeObj, int flags);
  142. [DllImport(LIBNAME)]
  143. private static extern void shape_ShapeTransformer_warpImage_13(IntPtr nativeObj, IntPtr transformingImage_nativeObj, IntPtr output_nativeObj);
  144. // native support for java finalize()
  145. [DllImport(LIBNAME)]
  146. private static extern void shape_ShapeTransformer_delete(IntPtr nativeObj);
  147. #endif
  148. }
  149. }