123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110 |
- using OpenCVForUnity.CoreModule;
- using OpenCVForUnity.UtilsModule;
- using System;
- using System.Collections.Generic;
- using System.Runtime.InteropServices;
- namespace OpenCVForUnity.VideoModule
- {
- // C++: class TrackerGOTURN
- /**
- * the GOTURN (Generic Object Tracking Using Regression Networks) tracker
- *
- * GOTURN (CITE: GOTURN) is kind of trackers based on Convolutional Neural Networks (CNN). While taking all advantages of CNN trackers,
- * GOTURN is much faster due to offline training without online fine-tuning nature.
- * GOTURN tracker addresses the problem of single target tracking: given a bounding box label of an object in the first frame of the video,
- * we track that object through the rest of the video. NOTE: Current method of GOTURN does not handle occlusions; however, it is fairly
- * robust to viewpoint changes, lighting changes, and deformations.
- * Inputs of GOTURN are two RGB patches representing Target and Search patches resized to 227x227.
- * Outputs of GOTURN are predicted bounding box coordinates, relative to Search patch coordinate system, in format X1,Y1,X2,Y2.
- * Original paper is here: <http://davheld.github.io/GOTURN/GOTURN.pdf>
- * As long as original authors implementation: <https://github.com/davheld/GOTURN#train-the-tracker>
- * Implementation of training algorithm is placed in separately here due to 3d-party dependencies:
- * <https://github.com/Auron-X/GOTURN_Training_Toolkit>
- * GOTURN architecture goturn.prototxt and trained model goturn.caffemodel are accessible on opencv_extra GitHub repository.
- */
- public class TrackerGOTURN : Tracker
- {
- protected override void Dispose(bool disposing)
- {
- try
- {
- if (disposing)
- {
- }
- if (IsEnabledDispose)
- {
- if (nativeObj != IntPtr.Zero)
- video_TrackerGOTURN_delete(nativeObj);
- nativeObj = IntPtr.Zero;
- }
- }
- finally
- {
- base.Dispose(disposing);
- }
- }
- protected internal TrackerGOTURN(IntPtr addr) : base(addr) { }
- // internal usage only
- public static new TrackerGOTURN __fromPtr__(IntPtr addr) { return new TrackerGOTURN(addr); }
- //
- // C++: static Ptr_TrackerGOTURN cv::TrackerGOTURN::create(TrackerGOTURN_Params parameters = TrackerGOTURN::Params())
- //
- /**
- * Constructor
- * param parameters GOTURN parameters TrackerGOTURN::Params
- * return automatically generated
- */
- public static TrackerGOTURN create(TrackerGOTURN_Params parameters)
- {
- if (parameters != null) parameters.ThrowIfDisposed();
- return TrackerGOTURN.__fromPtr__(DisposableObject.ThrowIfNullIntPtr(video_TrackerGOTURN_create_10(parameters.nativeObj)));
- }
- /**
- * Constructor
- * return automatically generated
- */
- public static TrackerGOTURN create()
- {
- return TrackerGOTURN.__fromPtr__(DisposableObject.ThrowIfNullIntPtr(video_TrackerGOTURN_create_11()));
- }
- #if (UNITY_IOS || UNITY_WEBGL) && !UNITY_EDITOR
- const string LIBNAME = "__Internal";
- #else
- const string LIBNAME = "opencvforunity";
- #endif
- // C++: static Ptr_TrackerGOTURN cv::TrackerGOTURN::create(TrackerGOTURN_Params parameters = TrackerGOTURN::Params())
- [DllImport(LIBNAME)]
- private static extern IntPtr video_TrackerGOTURN_create_10(IntPtr parameters_nativeObj);
- [DllImport(LIBNAME)]
- private static extern IntPtr video_TrackerGOTURN_create_11();
- // native support for java finalize()
- [DllImport(LIBNAME)]
- private static extern void video_TrackerGOTURN_delete(IntPtr nativeObj);
- }
- }
|