BackgroundSubtractor.cs 3.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123
  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.VideoModule {
  8. // C++: class BackgroundSubtractor
  9. //javadoc: BackgroundSubtractor
  10. public class BackgroundSubtractor : 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. video_BackgroundSubtractor_delete(nativeObj);
  19. nativeObj = IntPtr.Zero;
  20. }
  21. } finally {
  22. base.Dispose(disposing);
  23. }
  24. #else
  25. return;
  26. #endif
  27. }
  28. protected internal BackgroundSubtractor(IntPtr addr)
  29. : base(addr) {
  30. }
  31. // internal usage only
  32. public static new BackgroundSubtractor __fromPtr__(IntPtr addr) {
  33. return new BackgroundSubtractor(addr);
  34. }
  35. //
  36. // C++: void cv::BackgroundSubtractor::apply(Mat image, Mat& fgmask, double learningRate = -1)
  37. //
  38. //javadoc: BackgroundSubtractor::apply(image, fgmask, learningRate)
  39. public virtual void apply(Mat image, Mat fgmask, double learningRate) {
  40. ThrowIfDisposed();
  41. if (image != null)
  42. image.ThrowIfDisposed();
  43. if (fgmask != null)
  44. fgmask.ThrowIfDisposed();
  45. #if (UNITY_ANDROID && !UNITY_EDITOR)
  46. video_BackgroundSubtractor_apply_10(nativeObj, image.nativeObj, fgmask.nativeObj, learningRate);
  47. return;
  48. #else
  49. return;
  50. #endif
  51. }
  52. //javadoc: BackgroundSubtractor::apply(image, fgmask)
  53. public virtual void apply(Mat image, Mat fgmask) {
  54. ThrowIfDisposed();
  55. if (image != null)
  56. image.ThrowIfDisposed();
  57. if (fgmask != null)
  58. fgmask.ThrowIfDisposed();
  59. #if (UNITY_ANDROID && !UNITY_EDITOR)
  60. video_BackgroundSubtractor_apply_11(nativeObj, image.nativeObj, fgmask.nativeObj);
  61. return;
  62. #else
  63. return;
  64. #endif
  65. }
  66. //
  67. // C++: void cv::BackgroundSubtractor::getBackgroundImage(Mat& backgroundImage)
  68. //
  69. //javadoc: BackgroundSubtractor::getBackgroundImage(backgroundImage)
  70. public virtual void getBackgroundImage(Mat backgroundImage) {
  71. ThrowIfDisposed();
  72. if (backgroundImage != null)
  73. backgroundImage.ThrowIfDisposed();
  74. #if (UNITY_ANDROID && !UNITY_EDITOR)
  75. video_BackgroundSubtractor_getBackgroundImage_10(nativeObj, backgroundImage.nativeObj);
  76. return;
  77. #else
  78. return;
  79. #endif
  80. }
  81. #if (UNITY_ANDROID && !UNITY_EDITOR)
  82. const string LIBNAME = "opencvforunity";
  83. // C++: void cv::BackgroundSubtractor::apply(Mat image, Mat& fgmask, double learningRate = -1)
  84. [DllImport(LIBNAME)]
  85. private static extern void video_BackgroundSubtractor_apply_10(IntPtr nativeObj, IntPtr image_nativeObj, IntPtr fgmask_nativeObj, double learningRate);
  86. [DllImport(LIBNAME)]
  87. private static extern void video_BackgroundSubtractor_apply_11(IntPtr nativeObj, IntPtr image_nativeObj, IntPtr fgmask_nativeObj);
  88. // C++: void cv::BackgroundSubtractor::getBackgroundImage(Mat& backgroundImage)
  89. [DllImport(LIBNAME)]
  90. private static extern void video_BackgroundSubtractor_getBackgroundImage_10(IntPtr nativeObj, IntPtr backgroundImage_nativeObj);
  91. // native support for java finalize()
  92. [DllImport(LIBNAME)]
  93. private static extern void video_BackgroundSubtractor_delete(IntPtr nativeObj);
  94. #endif
  95. }
  96. }