diff --git a/binding.gyp b/binding.gyp index 7061b4e11..f8367108e 100644 --- a/binding.gyp +++ b/binding.gyp @@ -81,19 +81,10 @@ "cc/tracking/tracking.cc", "cc/tracking/Tracker.cc", "cc/tracking/MultiTracker.cc", - "cc/tracking/Trackers/TrackerBoosting.cc", - "cc/tracking/Trackers/TrackerBoostingParams.cc", - "cc/tracking/Trackers/TrackerKCF.cc", - "cc/tracking/Trackers/TrackerKCFParams.cc", - "cc/tracking/Trackers/TrackerMIL.cc", - "cc/tracking/Trackers/TrackerMILParams.cc", - "cc/tracking/Trackers/TrackerMedianFlow.cc", - "cc/tracking/Trackers/TrackerTLD.cc", + "cc/tracking/Trackers/TrackerLegacy.cc", + "cc/tracking/Trackers/TrackerLegacyParams.cc", "cc/tracking/Trackers/TrackerGOTURN.cc", "cc/tracking/Trackers/TrackerNano.cc", - "cc/tracking/Trackers/TrackerCSRT.cc", - "cc/tracking/Trackers/TrackerCSRTParams.cc", - "cc/tracking/Trackers/TrackerMOSSE.cc", "cc/features2d/features2d.cc", "cc/features2d/KeyPoint.cc", "cc/features2d/KeyPointMatch.cc", diff --git a/binding_old.gyp b/binding_old.gyp index 239a61c08..c973e61cf 100644 --- a/binding_old.gyp +++ b/binding_old.gyp @@ -81,19 +81,10 @@ "cc/tracking/tracking.cc", "cc/tracking/Tracker.cc", "cc/tracking/MultiTracker.cc", - "cc/tracking/Trackers/TrackerBoosting.cc", - "cc/tracking/Trackers/TrackerBoostingParams.cc", - "cc/tracking/Trackers/TrackerKCF.cc", - "cc/tracking/Trackers/TrackerKCFParams.cc", - "cc/tracking/Trackers/TrackerMIL.cc", - "cc/tracking/Trackers/TrackerMILParams.cc", - "cc/tracking/Trackers/TrackerMedianFlow.cc", - "cc/tracking/Trackers/TrackerTLD.cc", + "cc/tracking/Trackers/TrackerLegacy.cc", + "cc/tracking/Trackers/TrackerLegacyParams.cc", "cc/tracking/Trackers/TrackerGOTURN.cc", "cc/tracking/Trackers/TrackerNano.cc", - "cc/tracking/Trackers/TrackerCSRT.cc", - "cc/tracking/Trackers/TrackerCSRTParams.cc", - "cc/tracking/Trackers/TrackerMOSSE.cc", "cc/features2d/features2d.cc", "cc/features2d/KeyPoint.cc", "cc/features2d/KeyPointMatch.cc", diff --git a/cc/tracking/MultiTracker.cc b/cc/tracking/MultiTracker.cc index f09165398..2f29b071f 100644 --- a/cc/tracking/MultiTracker.cc +++ b/cc/tracking/MultiTracker.cc @@ -23,10 +23,10 @@ NAN_MODULE_INIT(MultiTracker::Init) { Nan::SetPrototypeMethod(ctor, "addKCF", MultiTracker::AddKCF); #if CV_VERSION_GREATER_EQUAL(3, 4, 0) Nan::SetPrototypeMethod(ctor, "addMOSSE", MultiTracker::AddTLD); -#endif +#endif // CV_VERSION_GREATER_EQUAL(3, 4, 0) #if CV_VERSION_GREATER_EQUAL(3, 4, 1) Nan::SetPrototypeMethod(ctor, "addCSRT", MultiTracker::AddKCF); -#endif +#endif // CV_VERSION_GREATER_EQUAL(3, 4, 1) Nan::SetPrototypeMethod(ctor, "update", MultiTracker::Update); Nan::Set(target, FF::newString("MultiTracker"), FF::getFunction(ctor)); @@ -38,9 +38,9 @@ NAN_METHOD(MultiTracker::New) { MultiTracker* self = new MultiTracker(); #if CV_VERSION_GREATER_EQUAL(4, 5, 2) self->setNativeObject(cv::makePtr()); -#else +#else // CV_VERSION_GREATER_EQUAL(4, 5, 2) self->setNativeObject(cv::makePtr()); -#endif +#endif // CV_VERSION_GREATER_EQUAL(4, 5, 2) self->Wrap(info.Holder()); info.GetReturnValue().Set(info.Holder()); }; @@ -57,9 +57,9 @@ NAN_METHOD(MultiTracker::AddMIL) { cv::Ptr type = cv::legacy::TrackerMIL::create(); #elif CV_VERSION_GREATER_EQUAL(3, 3, 0) cv::Ptr type = cv::TrackerMIL::create(); -#else +#else // CV_VERSION_GREATER_EQUAL(3, 3, 0) const std::string type("MIL"); -#endif +#endif // CV_VERSION_GREATER_EQUAL(4, 5, 2) bool ret = MultiTracker::unwrapSelf(info)->add(type, image, boundingBox); info.GetReturnValue().Set(Nan::New(ret)); } @@ -76,9 +76,9 @@ NAN_METHOD(MultiTracker::AddBOOSTING) { cv::Ptr type = cv::legacy::TrackerBoosting::create(); #elif CV_VERSION_GREATER_EQUAL(3, 3, 0) cv::Ptr type = cv::TrackerBoosting::create(); -#else +#else // CV_VERSION_GREATER_EQUAL(3, 3, 0) const std::string type("BOOSTING"); -#endif +#endif // CV_VERSION_GREATER_EQUAL(4, 5, 2) bool ret = MultiTracker::unwrapSelf(info)->add(type, image, boundingBox); info.GetReturnValue().Set(Nan::New(ret)); } @@ -95,9 +95,9 @@ NAN_METHOD(MultiTracker::AddMEDIANFLOW) { cv::Ptr type = cv::legacy::TrackerMedianFlow::create(); #elif CV_VERSION_GREATER_EQUAL(3, 3, 0) cv::Ptr type = cv::TrackerMedianFlow::create(); -#else +#else // CV_VERSION_GREATER_EQUAL(3, 3, 0) const std::string type("MEDIANFLOW"); -#endif +#endif // CV_VERSION_GREATER_EQUAL(4, 5, 2) bool ret = MultiTracker::unwrapSelf(info)->add(type, image, boundingBox); info.GetReturnValue().Set(Nan::New(ret)); } @@ -114,9 +114,9 @@ NAN_METHOD(MultiTracker::AddTLD) { cv::Ptr type = cv::legacy::TrackerTLD::create(); #elif CV_VERSION_GREATER_EQUAL(3, 3, 0) cv::Ptr type = cv::TrackerTLD::create(); -#else +#else // CV_VERSION_GREATER_EQUAL(3, 3, 0) const std::string type("TLD"); -#endif +#endif // CV_VERSION_GREATER_EQUAL(4, 5, 2) bool ret = MultiTracker::unwrapSelf(info)->add(type, image, boundingBox); info.GetReturnValue().Set(Nan::New(ret)); } @@ -133,9 +133,9 @@ NAN_METHOD(MultiTracker::AddKCF) { cv::Ptr type = cv::legacy::TrackerKCF::create(); #elif CV_VERSION_GREATER_EQUAL(3, 3, 0) cv::Ptr type = cv::TrackerKCF::create(); -#else +#else // CV_VERSION_GREATER_EQUAL(3, 3, 0) const std::string type("KCF"); -#endif +#endif // CV_VERSION_GREATER_EQUAL(4, 5, 2) bool ret = MultiTracker::unwrapSelf(info)->add(type, image, boundingBox); info.GetReturnValue().Set(Nan::New(ret)); } @@ -151,6 +151,7 @@ NAN_METHOD(MultiTracker::Update) { MultiTracker::unwrapSelf(info)->update(image, rects); info.GetReturnValue().Set(Rect::ArrayConverter::wrap(rects)); } + #if CV_VERSION_GREATER_EQUAL(3, 4, 0) NAN_METHOD(MultiTracker::AddMOSSE) { @@ -163,14 +164,14 @@ NAN_METHOD(MultiTracker::AddMOSSE) { } #if CV_VERSION_GREATER_EQUAL(4, 5, 2) cv::Ptr type = cv::legacy::TrackerMOSSE::create(); -#else +#else // CV_VERSION_GREATER_EQUAL(4, 5, 2) cv::Ptr type = cv::TrackerMOSSE::create(); -#endif +#endif // CV_VERSION_GREATER_EQUAL(4, 5, 2) bool ret = MultiTracker::unwrapSelf(info)->add(type, image, boundingBox); info.GetReturnValue().Set(Nan::New(ret)); } +#endif // CV_VERSION_GREATER_EQUAL(3, 4, 0) -#endif #if CV_VERSION_GREATER_EQUAL(3, 4, 1) NAN_METHOD(MultiTracker::AddCSRT) { @@ -183,14 +184,14 @@ NAN_METHOD(MultiTracker::AddCSRT) { } #if CV_VERSION_GREATER_EQUAL(4, 5, 2) cv::Ptr type = cv::legacy::TrackerCSRT::create(); -#else +#else // CV_VERSION_GREATER_EQUAL(4, 5, 2) cv::Ptr type = cv::TrackerCSRT::create(); -#endif +#endif // CV_VERSION_GREATER_EQUAL(4, 5, 2) bool ret = MultiTracker::unwrapSelf(info)->add(type, image, boundingBox); info.GetReturnValue().Set(Nan::New(ret)); } -#endif +#endif // CV_VERSION_GREATER_EQUAL(3, 4, 1) -#endif +#endif // CV_VERSION_GREATER_EQUAL(3, 1, 0) -#endif +#endif // HAVE_OPENCV_TRACKING diff --git a/cc/tracking/MultiTracker.h b/cc/tracking/MultiTracker.h index 302459c3d..2cda75e5e 100644 --- a/cc/tracking/MultiTracker.h +++ b/cc/tracking/MultiTracker.h @@ -2,7 +2,7 @@ #include #if CV_VERSION_GREATER_EQUAL(4, 5, 2) #include -#endif +#endif // CV_VERSION_GREATER_EQUAL(4, 5, 2) #include "Mat.h" #include "Rect.h" @@ -11,11 +11,13 @@ #ifndef __FF_MULTITRACKER_H__ #define __FF_MULTITRACKER_H__ +class MultiTracker #if CV_VERSION_GREATER_EQUAL(4, 5, 2) -class MultiTracker : public FF::ObjectWrap> { -#else -class MultiTracker : public FF::ObjectWrap> { -#endif + : public FF::ObjectWrap> +#else // CV_VERSION_GREATER_EQUAL(4, 5, 2) + : public FF::ObjectWrap> +#endif // CV_VERSION_GREATER_EQUAL(4, 5, 2) +{ public: static Nan::Persistent constructor; @@ -36,6 +38,6 @@ class MultiTracker : public FF::ObjectWrapgetTracker()->init(image, boundingBox); - info.GetReturnValue().Set(Nan::New(ret)); + try { + bool ret = Tracker::unwrapThis(info)->getTracker()->init(image, boundingBox); + // If no error is thrown, return true + info.GetReturnValue().Set(Nan::New(ret)); + } catch (const std::exception& e) { + return tryCatch.throwError(e.what()); + } } NAN_METHOD(Tracker::Update) { diff --git a/cc/tracking/Trackers/TrackerBoosting.cc b/cc/tracking/Trackers/TrackerBoosting.cc deleted file mode 100644 index eab2d4287..000000000 --- a/cc/tracking/Trackers/TrackerBoosting.cc +++ /dev/null @@ -1,49 +0,0 @@ -#include "opencv_modules.h" - -#ifdef HAVE_OPENCV_TRACKING - -#include "TrackerBoosting.h" -#include "TrackerBoostingParams.h" - -Nan::Persistent TrackerBoosting::constructor; - -NAN_MODULE_INIT(TrackerBoosting::Init) { - v8::Local ctor = Nan::New(TrackerBoosting::New); - v8::Local instanceTemplate = ctor->InstanceTemplate(); - - Tracker::Init(ctor); - TrackerBoostingParams::Init(target); - - constructor.Reset(ctor); - ctor->SetClassName(FF::newString("TrackerBoosting")); - instanceTemplate->SetInternalFieldCount(1); - - Nan::Set(target, FF::newString("TrackerBoosting"), FF::getFunction(ctor)); -}; - -NAN_METHOD(TrackerBoosting::New) { - FF::TryCatch tryCatch("TrackerBoosting::New"); - FF_ASSERT_CONSTRUCT_CALL(); - -#if CV_VERSION_GREATER_EQUAL(4, 5, 2) - cv::legacy::TrackerBoosting::Params params; -#else - cv::TrackerBoosting::Params params; -#endif - if (TrackerBoostingParams::Converter::optArg(0, ¶ms, info)) { - return tryCatch.reThrow(); - } - - TrackerBoosting* self = new TrackerBoosting(); -#if CV_VERSION_GREATER_EQUAL(4, 5, 2) - self->tracker = cv::legacy::TrackerBoosting::create(params); -#elif CV_VERSION_GREATER_EQUAL(3, 3, 0) - self->tracker = cv::TrackerBoosting::create(params); -#else - self->tracker = cv::TrackerBoosting::createTracker(params); -#endif - self->Wrap(info.Holder()); - info.GetReturnValue().Set(info.Holder()); -}; - -#endif diff --git a/cc/tracking/Trackers/TrackerBoosting.h b/cc/tracking/Trackers/TrackerBoosting.h deleted file mode 100644 index 89ff1858e..000000000 --- a/cc/tracking/Trackers/TrackerBoosting.h +++ /dev/null @@ -1,30 +0,0 @@ -#include "../Tracker.h" - -#ifndef __FF_TRACKERBOOSTING_H__ -#define __FF_TRACKERBOOSTING_H__ - -class TrackerBoosting : public Tracker { -public: -#if CV_VERSION_GREATER_EQUAL(4, 5, 2) - cv::Ptr tracker; -#else - cv::Ptr tracker; -#endif - - static NAN_MODULE_INIT(Init); - static NAN_METHOD(New); - - static Nan::Persistent constructor; - -#if CV_VERSION_GREATER_EQUAL(4, 5, 2) - cv::Ptr getTracker() -#else - cv::Ptr getTracker() -#endif - { - return tracker; - } -} -; - -#endif diff --git a/cc/tracking/Trackers/TrackerBoostingParams.cc b/cc/tracking/Trackers/TrackerBoostingParams.cc deleted file mode 100644 index ccf0c998a..000000000 --- a/cc/tracking/Trackers/TrackerBoostingParams.cc +++ /dev/null @@ -1,39 +0,0 @@ -#include "opencv_modules.h" - -#ifdef HAVE_OPENCV_TRACKING - -#include "TrackerBoostingParams.h" - -Nan::Persistent TrackerBoostingParams::constructor; - -NAN_MODULE_INIT(TrackerBoostingParams::Init) { - v8::Local ctor = Nan::New(TrackerBoostingParams::New); - v8::Local instanceTemplate = ctor->InstanceTemplate(); - - constructor.Reset(ctor); - ctor->SetClassName(FF::newString("TrackerBoostingParams")); - instanceTemplate->SetInternalFieldCount(1); - - Nan::SetAccessor(instanceTemplate, FF::newString("numClassifiers"), numClassifiers_getter, numClassifiers_setter); - Nan::SetAccessor(instanceTemplate, FF::newString("samplerOverlap"), samplerOverlap_getter, samplerOverlap_setter); - Nan::SetAccessor(instanceTemplate, FF::newString("samplerSearchFactor"), samplerSearchFactor_getter, samplerSearchFactor_setter); - Nan::SetAccessor(instanceTemplate, FF::newString("iterationInit"), iterationInit_getter, iterationInit_setter); - Nan::SetAccessor(instanceTemplate, FF::newString("featureSetNumFeatures"), featureSetNumFeatures_getter, featureSetNumFeatures_setter); - - Nan::Set(target, FF::newString("TrackerBoostingParams"), FF::getFunction(ctor)); -}; - -NAN_METHOD(TrackerBoostingParams::New) { - FF::TryCatch tryCatch("TrackerBoostingParams::New"); - FF_ASSERT_CONSTRUCT_CALL(); - TrackerBoostingParams* self = new TrackerBoostingParams(); -#if CV_VERSION_GREATER_EQUAL(4, 5, 2) - self->self = cv::legacy::TrackerBoosting::Params(); -#else - self->self = cv::TrackerBoosting::Params(); -#endif - self->Wrap(info.Holder()); - info.GetReturnValue().Set(info.Holder()); -}; - -#endif diff --git a/cc/tracking/Trackers/TrackerBoostingParams.h b/cc/tracking/Trackers/TrackerBoostingParams.h deleted file mode 100644 index dfcd3ecf2..000000000 --- a/cc/tracking/Trackers/TrackerBoostingParams.h +++ /dev/null @@ -1,33 +0,0 @@ -#include "macros.h" -#include -#if CV_VERSION_GREATER_EQUAL(4, 5, 2) -#include -#endif - -#ifndef __FF_TRACKERBOOSTINGPARAMS_H__ -#define __FF_TRACKERBOOSTINGPARAMS_H__ - -#if CV_VERSION_GREATER_EQUAL(4, 5, 2) -class TrackerBoostingParams : public FF::ObjectWrap -#else -class TrackerBoostingParams : public FF::ObjectWrap -#endif -{ - public: - static Nan::Persistent constructor; - - static const char* getClassName() { - return "TrackerBoostingParams"; - } - - static NAN_MODULE_INIT(Init); - static NAN_METHOD(New); - - FF_ACCESSORS(numClassifiers, FF::IntConverter); - FF_ACCESSORS(samplerOverlap, FF::FloatConverter); - FF_ACCESSORS(samplerSearchFactor, FF::FloatConverter); - FF_ACCESSORS(iterationInit, FF::IntConverter); - FF_ACCESSORS(featureSetNumFeatures, FF::IntConverter); -}; - -#endif diff --git a/cc/tracking/Trackers/TrackerCSRT.cc b/cc/tracking/Trackers/TrackerCSRT.cc deleted file mode 100644 index a2751f94c..000000000 --- a/cc/tracking/Trackers/TrackerCSRT.cc +++ /dev/null @@ -1,51 +0,0 @@ -#include "opencv_modules.h" - -#ifdef HAVE_OPENCV_TRACKING - -#include "TrackerCSRT.h" -#include "TrackerCSRTParams.h" - -#if CV_VERSION_GREATER_EQUAL(3, 4, 1) - -Nan::Persistent TrackerCSRT::constructor; - -NAN_MODULE_INIT(TrackerCSRT::Init) { - v8::Local ctor = Nan::New(TrackerCSRT::New); - v8::Local instanceTemplate = ctor->InstanceTemplate(); - - Tracker::Init(ctor); - TrackerCSRTParams::Init(target); - - constructor.Reset(ctor); - ctor->SetClassName(FF::newString("TrackerCSRT")); - instanceTemplate->SetInternalFieldCount(1); - - Nan::Set(target, FF::newString("TrackerCSRT"), FF::getFunction(ctor)); -}; - -NAN_METHOD(TrackerCSRT::New) { - FF::TryCatch tryCatch("TrackerCSRT::New"); - FF_ASSERT_CONSTRUCT_CALL(); - -#if CV_VERSION_GREATER_EQUAL(4, 5, 2) - cv::legacy::TrackerCSRT::Params params; -#else - cv::TrackerCSRT::Params params; -#endif - if (TrackerCSRTParams::Converter::optArg(0, ¶ms, info)) { - return tryCatch.reThrow(); - } - - TrackerCSRT* self = new TrackerCSRT(); -#if CV_VERSION_GREATER_EQUAL(4, 5, 2) - self->tracker = cv::legacy::TrackerCSRT::create(params); -#else - self->tracker = cv::TrackerCSRT::create(params); -#endif - self->Wrap(info.Holder()); - info.GetReturnValue().Set(info.Holder()); -}; - -#endif - -#endif diff --git a/cc/tracking/Trackers/TrackerCSRT.h b/cc/tracking/Trackers/TrackerCSRT.h deleted file mode 100644 index 8fdc7b706..000000000 --- a/cc/tracking/Trackers/TrackerCSRT.h +++ /dev/null @@ -1,33 +0,0 @@ -#include "../Tracker.h" - -#if CV_VERSION_GREATER_EQUAL(3, 4, 1) - -#ifndef __FF_TRACKERCSRT_H__ -#define __FF_TRACKERCSRT_H__ - -class TrackerCSRT : public Tracker { -public: -#if CV_VERSION_GREATER_EQUAL(4, 5, 2) - cv::Ptr tracker; -#else - cv::Ptr tracker; -#endif - - static NAN_MODULE_INIT(Init); - static NAN_METHOD(New); - - static Nan::Persistent constructor; - -#if CV_VERSION_GREATER_EQUAL(4, 5, 2) - cv::Ptr getTracker() -#else - cv::Ptr getTracker() -#endif - { - return tracker; - } -}; - -#endif - -#endif diff --git a/cc/tracking/Trackers/TrackerCSRTParams.cc b/cc/tracking/Trackers/TrackerCSRTParams.cc deleted file mode 100644 index 4abe235fe..000000000 --- a/cc/tracking/Trackers/TrackerCSRTParams.cc +++ /dev/null @@ -1,63 +0,0 @@ -#include "opencv_modules.h" - -#ifdef HAVE_OPENCV_TRACKING - -#include "TrackerCSRTParams.h" - -#if CV_VERSION_GREATER_EQUAL(3, 4, 1) - -Nan::Persistent TrackerCSRTParams::constructor; - -NAN_MODULE_INIT(TrackerCSRTParams::Init) { - v8::Local ctor = Nan::New(TrackerCSRTParams::New); - v8::Local instanceTemplate = ctor->InstanceTemplate(); - - constructor.Reset(ctor); - ctor->SetClassName(FF::newString("TrackerCSRTParams")); - instanceTemplate->SetInternalFieldCount(1); - - Nan::SetAccessor(instanceTemplate, FF::newString("admm_iterations"), admm_iterations_getter, admm_iterations_setter); - Nan::SetAccessor(instanceTemplate, FF::newString("background_ratio"), background_ratio_getter, background_ratio_setter); - Nan::SetAccessor(instanceTemplate, FF::newString("cheb_attenuation"), cheb_attenuation_getter, cheb_attenuation_setter); - Nan::SetAccessor(instanceTemplate, FF::newString("filter_lr"), filter_lr_getter, filter_lr_setter); - Nan::SetAccessor(instanceTemplate, FF::newString("gsl_sigma"), gsl_sigma_getter, gsl_sigma_setter); - Nan::SetAccessor(instanceTemplate, FF::newString("histogram_bins"), histogram_bins_getter, histogram_bins_setter); - Nan::SetAccessor(instanceTemplate, FF::newString("histogram_lr"), histogram_lr_getter, histogram_lr_setter); - Nan::SetAccessor(instanceTemplate, FF::newString("hog_clip"), hog_clip_getter, hog_clip_setter); - Nan::SetAccessor(instanceTemplate, FF::newString("hog_orientations"), hog_orientations_getter, hog_orientations_setter); - Nan::SetAccessor(instanceTemplate, FF::newString("kaiser_alpha"), kaiser_alpha_getter, kaiser_alpha_setter); - Nan::SetAccessor(instanceTemplate, FF::newString("num_hog_channels_used"), num_hog_channels_used_getter, num_hog_channels_used_setter); - Nan::SetAccessor(instanceTemplate, FF::newString("number_of_scales"), number_of_scales_getter, number_of_scales_setter); - Nan::SetAccessor(instanceTemplate, FF::newString("padding"), padding_getter, padding_setter); -#if CV_VERSION_GREATER_EQUAL(3, 4, 4) - Nan::SetAccessor(instanceTemplate, FF::newString("psr_threshold"), psr_threshold_getter, psr_threshold_setter); -#endif - Nan::SetAccessor(instanceTemplate, FF::newString("scale_lr"), scale_lr_getter, scale_lr_setter); - Nan::SetAccessor(instanceTemplate, FF::newString("scale_model_max_area"), scale_model_max_area_getter, scale_model_max_area_setter); - Nan::SetAccessor(instanceTemplate, FF::newString("scale_sigma_factor"), scale_sigma_factor_getter, scale_sigma_factor_setter); - Nan::SetAccessor(instanceTemplate, FF::newString("scale_step"), scale_step_getter, scale_step_setter); - Nan::SetAccessor(instanceTemplate, FF::newString("template_size"), template_size_getter, template_size_setter); - Nan::SetAccessor(instanceTemplate, FF::newString("use_channel_weights"), use_channel_weights_getter, use_channel_weights_setter); - Nan::SetAccessor(instanceTemplate, FF::newString("use_color_names"), use_color_names_getter, use_color_names_setter); - Nan::SetAccessor(instanceTemplate, FF::newString("use_gray"), use_gray_getter, use_gray_setter); - Nan::SetAccessor(instanceTemplate, FF::newString("use_hog"), use_hog_getter, use_hog_setter); - Nan::SetAccessor(instanceTemplate, FF::newString("use_rgb"), use_rgb_getter, use_rgb_setter); - Nan::SetAccessor(instanceTemplate, FF::newString("use_segmentation"), use_segmentation_getter, use_segmentation_setter); - Nan::SetAccessor(instanceTemplate, FF::newString("weights_lr"), weights_lr_getter, weights_lr_setter); - Nan::SetAccessor(instanceTemplate, FF::newString("window_function"), window_function_getter, window_function_setter); - - Nan::Set(target, FF::newString("TrackerCSRTParams"), FF::getFunction(ctor)); -}; - -NAN_METHOD(TrackerCSRTParams::New) { - FF::TryCatch tryCatch("TrackerCSRTParams::New"); - FF_ASSERT_CONSTRUCT_CALL(); - TrackerCSRTParams* self = new TrackerCSRTParams(); - self->self = cv::TrackerCSRT::Params(); - self->Wrap(info.Holder()); - info.GetReturnValue().Set(info.Holder()); -}; - -#endif - -#endif diff --git a/cc/tracking/Trackers/TrackerCSRTParams.h b/cc/tracking/Trackers/TrackerCSRTParams.h deleted file mode 100644 index 9714f8895..000000000 --- a/cc/tracking/Trackers/TrackerCSRTParams.h +++ /dev/null @@ -1,54 +0,0 @@ -#include "macros.h" -#include - -#if CV_VERSION_GREATER_EQUAL(3, 4, 1) - -#ifndef __FF_TRACKERCSRTPARAMS_H__ -#define __FF_TRACKERCSRTPARAMS_H__ - -class TrackerCSRTParams : public FF::ObjectWrap { -public: - static Nan::Persistent constructor; - - static const char* getClassName() { - return "TrackerBoostingParams"; - } - - FF_ACCESSORS(admm_iterations, FF::IntConverter); - FF_ACCESSORS(background_ratio, FF::IntConverter); - FF_ACCESSORS(histogram_bins, FF::IntConverter); - FF_ACCESSORS(histogram_lr, FF::FloatConverter); - FF_ACCESSORS(number_of_scales, FF::IntConverter); - FF_ACCESSORS(scale_sigma_factor, FF::FloatConverter); - FF_ACCESSORS(scale_model_max_area, FF::FloatConverter); - FF_ACCESSORS(scale_lr, FF::FloatConverter); - FF_ACCESSORS(cheb_attenuation, FF::FloatConverter); - FF_ACCESSORS(kaiser_alpha, FF::FloatConverter); - FF_ACCESSORS(filter_lr, FF::FloatConverter); - FF_ACCESSORS(gsl_sigma, FF::FloatConverter); - FF_ACCESSORS(hog_clip, FF::FloatConverter); - FF_ACCESSORS(hog_orientations, FF::FloatConverter); - FF_ACCESSORS(padding, FF::FloatConverter); - FF_ACCESSORS(num_hog_channels_used, FF::IntConverter); - FF_ACCESSORS(scale_step, FF::FloatConverter); - FF_ACCESSORS(template_size, FF::FloatConverter); - FF_ACCESSORS(use_channel_weights, FF::BoolConverter); - FF_ACCESSORS(use_color_names, FF::BoolConverter); - FF_ACCESSORS(use_gray, FF::BoolConverter); - FF_ACCESSORS(use_hog, FF::BoolConverter); - FF_ACCESSORS(use_rgb, FF::BoolConverter); - FF_ACCESSORS(use_segmentation, FF::BoolConverter); - FF_ACCESSORS(weights_lr, FF::FloatConverter); - FF_ACCESSORS(window_function, FF::StringConverter); - -#if CV_VERSION_GREATER_EQUAL(3, 4, 4) - FF_ACCESSORS(psr_threshold, FF::FloatConverter); -#endif - - static NAN_MODULE_INIT(Init); - static NAN_METHOD(New); -}; - -#endif - -#endif \ No newline at end of file diff --git a/cc/tracking/Trackers/TrackerGOTURN.cc b/cc/tracking/Trackers/TrackerGOTURN.cc index ea67951fc..8c43efc70 100644 --- a/cc/tracking/Trackers/TrackerGOTURN.cc +++ b/cc/tracking/Trackers/TrackerGOTURN.cc @@ -52,7 +52,7 @@ NAN_METHOD(TrackerGOTURN::GetModel) { // TBD } -#endif +#endif // CV_VERSION_GREATER_EQUAL(4, 5, 2) NAN_MODULE_INIT(TrackerGOTURN::Init) { v8::Local ctor = Nan::New(TrackerGOTURN::New); @@ -63,9 +63,9 @@ NAN_MODULE_INIT(TrackerGOTURN::Init) { Nan::SetPrototypeMethod(ctor, "init", TrackerGOTURN::Init); Nan::SetPrototypeMethod(ctor, "update", TrackerGOTURN::Update); Nan::SetPrototypeMethod(ctor, "getModel", TrackerGOTURN::GetModel); -#else +#else // CV_VERSION_GREATER_EQUAL(4, 5, 2) Tracker::Init(ctor); -#endif +#endif // CV_VERSION_GREATER_EQUAL(4, 5, 2) constructor.Reset(ctor); ctor->SetClassName(FF::newString("TrackerGOTURN")); instanceTemplate->SetInternalFieldCount(1); @@ -80,14 +80,14 @@ NAN_METHOD(TrackerGOTURN::New) { TrackerGOTURN* self = new TrackerGOTURN(); #if CV_VERSION_GREATER_EQUAL(3, 3, 0) self->tracker = cv::TrackerGOTURN::create(); -#else +#else // CV_VERSION_GREATER_EQUAL(3, 3, 0) self->tracker = cv::TrackerGOTURN::createTracker(); -#endif +#endif // CV_VERSION_GREATER_EQUAL(3, 3, 0) self->Wrap(info.Holder()); info.GetReturnValue().Set(info.Holder()); }; -#endif +#endif // CV_VERSION_GREATER_EQUAL(3, 2, 0) -#endif +#endif // HAVE_OPENCV_TRACKING diff --git a/cc/tracking/Trackers/TrackerKCF.cc b/cc/tracking/Trackers/TrackerKCF.cc deleted file mode 100644 index bd479f069..000000000 --- a/cc/tracking/Trackers/TrackerKCF.cc +++ /dev/null @@ -1,53 +0,0 @@ -#include "opencv_modules.h" - -#ifdef HAVE_OPENCV_TRACKING - -#include "TrackerKCF.h" -#include "TrackerKCFParams.h" - -#if CV_VERSION_GREATER_EQUAL(3, 1, 0) - -Nan::Persistent TrackerKCF::constructor; - -NAN_MODULE_INIT(TrackerKCF::Init) { - v8::Local ctor = Nan::New(TrackerKCF::New); - v8::Local instanceTemplate = ctor->InstanceTemplate(); - - Tracker::Init(ctor); - TrackerKCFParams::Init(target); - - constructor.Reset(ctor); - ctor->SetClassName(FF::newString("TrackerKCF")); - instanceTemplate->SetInternalFieldCount(1); - - Nan::Set(target, FF::newString("TrackerKCF"), FF::getFunction(ctor)); -}; - -NAN_METHOD(TrackerKCF::New) { - FF::TryCatch tryCatch("TrackerKCF::New"); - FF_ASSERT_CONSTRUCT_CALL(); - -#if CV_VERSION_GREATER_EQUAL(4, 5, 2) - cv::legacy::TrackerKCF::Params params; -#else - cv::TrackerKCF::Params params; -#endif - if (TrackerKCFParams::Converter::optArg(0, ¶ms, info)) { - return tryCatch.reThrow(); - } - - TrackerKCF* self = new TrackerKCF(); -#if CV_VERSION_GREATER_EQUAL(4, 5, 2) - self->tracker = cv::legacy::TrackerKCF::create(params); -#elif CV_VERSION_GREATER_EQUAL(3, 3, 0) - self->tracker = cv::TrackerKCF::create(params); -#else - self->tracker = cv::TrackerKCF::createTracker(params); -#endif - self->Wrap(info.Holder()); - info.GetReturnValue().Set(info.Holder()); -}; - -#endif - -#endif diff --git a/cc/tracking/Trackers/TrackerKCF.h b/cc/tracking/Trackers/TrackerKCF.h deleted file mode 100644 index 33d01b9d3..000000000 --- a/cc/tracking/Trackers/TrackerKCF.h +++ /dev/null @@ -1,33 +0,0 @@ -#include "../Tracker.h" - -#if CV_VERSION_GREATER_EQUAL(3, 1, 0) - -#ifndef __FF_TRACKERKCF_H__ -#define __FF_TRACKERKCF_H__ - -class TrackerKCF : public Tracker { -public: -#if CV_VERSION_GREATER_EQUAL(4, 5, 2) - cv::Ptr tracker; -#else - cv::Ptr tracker; -#endif - - static NAN_MODULE_INIT(Init); - static NAN_METHOD(New); - - static Nan::Persistent constructor; - -#if CV_VERSION_GREATER_EQUAL(4, 5, 2) - cv::Ptr getTracker() -#else - cv::Ptr getTracker() -#endif - { - return tracker; - } -}; - -#endif - -#endif diff --git a/cc/tracking/Trackers/TrackerKCFParams.cc b/cc/tracking/Trackers/TrackerKCFParams.cc deleted file mode 100644 index 6caa59f65..000000000 --- a/cc/tracking/Trackers/TrackerKCFParams.cc +++ /dev/null @@ -1,49 +0,0 @@ -#include "opencv_modules.h" - -#ifdef HAVE_OPENCV_TRACKING - -#include "TrackerKCFParams.h" - -#if CV_VERSION_GREATER_EQUAL(3, 1, 0) - -Nan::Persistent TrackerKCFParams::constructor; - -NAN_MODULE_INIT(TrackerKCFParams::Init) { - v8::Local ctor = Nan::New(TrackerKCFParams::New); - v8::Local instanceTemplate = ctor->InstanceTemplate(); - - constructor.Reset(ctor); - ctor->SetClassName(FF::newString("TrackerKCFParams")); - instanceTemplate->SetInternalFieldCount(1); - - Nan::SetAccessor(instanceTemplate, FF::newString("sigma"), sigma_getter, sigma_setter); - Nan::SetAccessor(instanceTemplate, FF::newString("lambda"), lambda_getter, lambda_setter); - Nan::SetAccessor(instanceTemplate, FF::newString("interp_factor"), interp_factor_getter, interp_factor_setter); - Nan::SetAccessor(instanceTemplate, FF::newString("output_sigma_factor"), output_sigma_factor_getter, output_sigma_factor_setter); - Nan::SetAccessor(instanceTemplate, FF::newString("pca_learning_rate"), pca_learning_rate_getter, pca_learning_rate_setter); - Nan::SetAccessor(instanceTemplate, FF::newString("resize"), resize_getter, resize_setter); - Nan::SetAccessor(instanceTemplate, FF::newString("split_coeff"), split_coeff_getter, split_coeff_setter); - Nan::SetAccessor(instanceTemplate, FF::newString("wrap_kernel"), wrap_kernel_getter, wrap_kernel_setter); - Nan::SetAccessor(instanceTemplate, FF::newString("compress_feature"), compress_feature_getter, compress_feature_setter); - Nan::SetAccessor(instanceTemplate, FF::newString("max_patch_size"), max_patch_size_getter, max_patch_size_setter); - Nan::SetAccessor(instanceTemplate, FF::newString("compressed_size"), compressed_size_getter, compressed_size_setter); - Nan::SetAccessor(instanceTemplate, FF::newString("desc_pca"), desc_pca_getter, desc_pca_setter); - Nan::SetAccessor(instanceTemplate, FF::newString("desc_npca"), desc_npca_getter, desc_npca_setter); -#if CV_VERSION_GREATER_EQUAL(3, 3, 0) - Nan::SetAccessor(instanceTemplate, FF::newString("detect_thresh"), detect_thresh_getter, detect_thresh_setter); -#endif - Nan::Set(target, FF::newString("TrackerKCFParams"), FF::getFunction(ctor)); -}; - -NAN_METHOD(TrackerKCFParams::New) { - FF::TryCatch tryCatch("TrackerKCFParams::New"); - FF_ASSERT_CONSTRUCT_CALL(); - TrackerKCFParams* self = new TrackerKCFParams(); - self->self = cv::TrackerKCF::Params(); - self->Wrap(info.Holder()); - info.GetReturnValue().Set(info.Holder()); -}; - -#endif - -#endif diff --git a/cc/tracking/Trackers/TrackerKCFParams.h b/cc/tracking/Trackers/TrackerKCFParams.h deleted file mode 100644 index c9f092ce3..000000000 --- a/cc/tracking/Trackers/TrackerKCFParams.h +++ /dev/null @@ -1,41 +0,0 @@ -#include "macros.h" -#include - -#if CV_VERSION_GREATER_EQUAL(3, 1, 0) - -#ifndef __FF_TRACKERKCFPARAMS_H__ -#define __FF_TRACKERKCFPARAMS_H__ - -class TrackerKCFParams : public FF::ObjectWrap { -public: - static Nan::Persistent constructor; - - static const char* getClassName() { - return "TrackerKCFParams"; - } - - FF_ACCESSORS(sigma, FF::FloatConverter); - FF_ACCESSORS(lambda, FF::FloatConverter); - FF_ACCESSORS(interp_factor, FF::FloatConverter); - FF_ACCESSORS(output_sigma_factor, FF::FloatConverter); - FF_ACCESSORS(pca_learning_rate, FF::FloatConverter); - FF_ACCESSORS(resize, FF::BoolConverter); - FF_ACCESSORS(split_coeff, FF::BoolConverter); - FF_ACCESSORS(wrap_kernel, FF::BoolConverter); - FF_ACCESSORS(compress_feature, FF::BoolConverter); - FF_ACCESSORS(max_patch_size, FF::IntConverter); - FF_ACCESSORS(compressed_size, FF::IntConverter); - FF_ACCESSORS(desc_pca, FF::UintConverter); - FF_ACCESSORS(desc_npca, FF::UintConverter); - -#if CV_VERSION_GREATER_EQUAL(3, 3, 0) - FF_ACCESSORS(detect_thresh, FF::FloatConverter); -#endif - - static NAN_MODULE_INIT(Init); - static NAN_METHOD(New); -}; - -#endif - -#endif \ No newline at end of file diff --git a/cc/tracking/Trackers/TrackerLegacy.cc b/cc/tracking/Trackers/TrackerLegacy.cc new file mode 100644 index 000000000..68600a3b9 --- /dev/null +++ b/cc/tracking/Trackers/TrackerLegacy.cc @@ -0,0 +1,261 @@ +#include "opencv_modules.h" + +/** + * @brief merge legacy tracker classes into one file + * - TrackerCSRT + * - TrackerKCF + * - TrackerMedianFlow + * - TrackerMIL + * - TrackerMOSSE + * - TrackerTLD + * + * those classes will not evove in the future, so they are considered legacy + */ + +#ifdef HAVE_OPENCV_TRACKING + +#include "TrackerLegacy.h" +#include "TrackerLegacyParams.h" + +Nan::Persistent TrackerBoosting::constructor; + +NAN_MODULE_INIT(TrackerBoosting::Init) { + v8::Local ctor = Nan::New(TrackerBoosting::New); + v8::Local instanceTemplate = ctor->InstanceTemplate(); + Tracker::Init(ctor); + TrackerBoostingParams::Init(target); + constructor.Reset(ctor); + ctor->SetClassName(FF::newString("TrackerBoosting")); + instanceTemplate->SetInternalFieldCount(1); + Nan::Set(target, FF::newString("TrackerBoosting"), FF::getFunction(ctor)); +}; + +NAN_METHOD(TrackerBoosting::New) { + FF::TryCatch tryCatch("TrackerBoosting::New"); + FF_ASSERT_CONSTRUCT_CALL(); + +#if CV_VERSION_GREATER_EQUAL(4, 5, 2) + cv::legacy::TrackerBoosting::Params params; +#else // CV_VERSION_GREATER_EQUAL(4, 5, 2) + cv::TrackerBoosting::Params params; +#endif // CV_VERSION_GREATER_EQUAL(4, 5, 2) + if (TrackerBoostingParams::Converter::optArg(0, ¶ms, info)) { + return tryCatch.reThrow(); + } + + TrackerBoosting* self = new TrackerBoosting(); +#if CV_VERSION_GREATER_EQUAL(4, 5, 2) + self->tracker = cv::legacy::TrackerBoosting::create(params); +#elif CV_VERSION_GREATER_EQUAL(3, 3, 0) + self->tracker = cv::TrackerBoosting::create(params); +#else // CV_VERSION_GREATER_EQUAL(3, 3, 0) + self->tracker = cv::TrackerBoosting::createTracker(params); +#endif // CV_VERSION_GREATER_EQUAL(4, 5, 2) + self->Wrap(info.Holder()); + info.GetReturnValue().Set(info.Holder()); +}; + + +#if CV_VERSION_GREATER_EQUAL(3, 4, 1) +Nan::Persistent TrackerCSRT::constructor; + +NAN_MODULE_INIT(TrackerCSRT::Init) { + v8::Local ctor = Nan::New(TrackerCSRT::New); + v8::Local instanceTemplate = ctor->InstanceTemplate(); + Tracker::Init(ctor); + TrackerCSRTParams::Init(target); + constructor.Reset(ctor); + ctor->SetClassName(FF::newString("TrackerCSRT")); + instanceTemplate->SetInternalFieldCount(1); + Nan::Set(target, FF::newString("TrackerCSRT"), FF::getFunction(ctor)); +}; + +NAN_METHOD(TrackerCSRT::New) { + FF::TryCatch tryCatch("TrackerCSRT::New"); + FF_ASSERT_CONSTRUCT_CALL(); +#if CV_VERSION_GREATER_EQUAL(4, 5, 2) + cv::legacy::TrackerCSRT::Params params; +#else // CV_VERSION_GREATER_EQUAL(4, 5, 2) + cv::TrackerCSRT::Params params; +#endif // CV_VERSION_GREATER_EQUAL(4, 5, 2) + if (TrackerCSRTParams::Converter::optArg(0, ¶ms, info)) { + return tryCatch.reThrow(); + } + TrackerCSRT* self = new TrackerCSRT(); +#if CV_VERSION_GREATER_EQUAL(4, 5, 2) + self->tracker = cv::legacy::TrackerCSRT::create(params); +#else // CV_VERSION_GREATER_EQUAL(4, 5, 2) + self->tracker = cv::TrackerCSRT::create(params); +#endif // CV_VERSION_GREATER_EQUAL(4, 5, 2) + self->Wrap(info.Holder()); + info.GetReturnValue().Set(info.Holder()); +}; +#endif // CV_VERSION_GREATER_EQUAL(3, 4, 1) + +#if CV_VERSION_GREATER_EQUAL(3, 1, 0) +Nan::Persistent TrackerKCF::constructor; + +NAN_MODULE_INIT(TrackerKCF::Init) { + v8::Local ctor = Nan::New(TrackerKCF::New); + v8::Local instanceTemplate = ctor->InstanceTemplate(); + Tracker::Init(ctor); + TrackerKCFParams::Init(target); + constructor.Reset(ctor); + ctor->SetClassName(FF::newString("TrackerKCF")); + instanceTemplate->SetInternalFieldCount(1); + Nan::Set(target, FF::newString("TrackerKCF"), FF::getFunction(ctor)); +}; + +NAN_METHOD(TrackerKCF::New) { + FF::TryCatch tryCatch("TrackerKCF::New"); + FF_ASSERT_CONSTRUCT_CALL(); +#if CV_VERSION_GREATER_EQUAL(4, 5, 2) + cv::legacy::TrackerKCF::Params params; +#else // CV_VERSION_GREATER_EQUAL(4, 5, 2) + cv::TrackerKCF::Params params; +#endif // CV_VERSION_GREATER_EQUAL(4, 5, 2) + if (TrackerKCFParams::Converter::optArg(0, ¶ms, info)) { + return tryCatch.reThrow(); + } + + TrackerKCF* self = new TrackerKCF(); +#if CV_VERSION_GREATER_EQUAL(4, 5, 2) + self->tracker = cv::legacy::TrackerKCF::create(params); +#elif CV_VERSION_GREATER_EQUAL(3, 3, 0) + self->tracker = cv::TrackerKCF::create(params); +#else // CV_VERSION_GREATER_EQUAL(3, 3, 0) + self->tracker = cv::TrackerKCF::createTracker(params); +#endif // CV_VERSION_GREATER_EQUAL(4, 5, 2) + self->Wrap(info.Holder()); + info.GetReturnValue().Set(info.Holder()); +}; +#endif // CV_VERSION_GREATER_EQUAL(3, 1, 0) + +Nan::Persistent TrackerMedianFlow::constructor; +NAN_MODULE_INIT(TrackerMedianFlow::Init) { + v8::Local ctor = Nan::New(TrackerMedianFlow::New); + v8::Local instanceTemplate = ctor->InstanceTemplate(); + Tracker::Init(ctor); + constructor.Reset(ctor); + ctor->SetClassName(FF::newString("TrackerMedianFlow")); + instanceTemplate->SetInternalFieldCount(1); + Nan::Set(target, FF::newString("TrackerMedianFlow"), FF::getFunction(ctor)); +}; + +NAN_METHOD(TrackerMedianFlow::New) { + FF::TryCatch tryCatch("TrackerMedianFlow::New"); + FF_ASSERT_CONSTRUCT_CALL(); + + TrackerMedianFlow* self = new TrackerMedianFlow(); +#if CV_VERSION_GREATER_EQUAL(4, 5, 2) + cv::legacy::TrackerMedianFlow::Params params; +#else // CV_VERSION_GREATER_EQUAL(4, 5, 2) + cv::TrackerMedianFlow::Params params; +#endif // CV_VERSION_GREATER_EQUAL(4, 5, 2) + if (FF::hasArg(info, 0) && FF::IntConverterImpl::assertType(info[0])) { + params.pointsInGrid = info[0]->ToInt32(Nan::GetCurrentContext()).ToLocalChecked()->Value(); + } + +#if CV_VERSION_GREATER_EQUAL(4, 5, 2) + self->tracker = cv::legacy::TrackerMedianFlow::create(params); +#elif CV_VERSION_GREATER_EQUAL(3, 3, 0) + self->tracker = cv::TrackerMedianFlow::create(params); +#else // CV_VERSION_GREATER_EQUAL(3, 3, 0) + self->tracker = cv::TrackerMedianFlow::createTracker(params); +#endif // CV_VERSION_GREATER_EQUAL(4, 5, 2) + self->Wrap(info.Holder()); + info.GetReturnValue().Set(info.Holder()); +}; + +Nan::Persistent TrackerMIL::constructor; + +NAN_MODULE_INIT(TrackerMIL::Init) { + v8::Local ctor = Nan::New(TrackerMIL::New); + v8::Local instanceTemplate = ctor->InstanceTemplate(); + Tracker::Init(ctor); + TrackerMILParams::Init(target); + constructor.Reset(ctor); + ctor->SetClassName(FF::newString("TrackerMIL")); + instanceTemplate->SetInternalFieldCount(1); + Nan::Set(target, FF::newString("TrackerMIL"), FF::getFunction(ctor)); +}; + +NAN_METHOD(TrackerMIL::New) { + FF::TryCatch tryCatch("TrackerMIL::New"); + FF_ASSERT_CONSTRUCT_CALL(); + +#if CV_VERSION_GREATER_EQUAL(4, 5, 2) + cv::legacy::TrackerMIL::Params params; +#else // CV_VERSION_GREATER_EQUAL(4, 5, 2) + cv::TrackerMIL::Params params; +#endif // CV_VERSION_GREATER_EQUAL(4, 5, 2) + if (TrackerMILParams::Converter::optArg(0, ¶ms, info)) { + return tryCatch.reThrow(); + } + TrackerMIL* self = new TrackerMIL(); +#if CV_VERSION_GREATER_EQUAL(4, 5, 2) + self->tracker = cv::legacy::TrackerMIL::create(params); +#elif CV_VERSION_GREATER_EQUAL(3, 3, 0) + self->tracker = cv::TrackerMIL::create(params); +#else + self->tracker = cv::TrackerMIL::createTracker(params); +#endif + self->Wrap(info.Holder()); + info.GetReturnValue().Set(info.Holder()); +}; + +// Ensure that this code is only compiled if OpenCV is 3.4.0 or greater +#if CV_VERSION_GREATER_EQUAL(3, 4, 0) +Nan::Persistent TrackerMOSSE::constructor; +NAN_MODULE_INIT(TrackerMOSSE::Init) { + v8::Local ctor = Nan::New(TrackerMOSSE::New); + v8::Local instanceTemplate = ctor->InstanceTemplate(); + Tracker::Init(ctor); + constructor.Reset(ctor); + ctor->SetClassName(FF::newString("TrackerMOSSE")); + instanceTemplate->SetInternalFieldCount(1); + Nan::Set(target, FF::newString("TrackerMOSSE"), FF::getFunction(ctor)); +}; + +NAN_METHOD(TrackerMOSSE::New) { + FF::TryCatch tryCatch("TrackerMOSSE::New"); + FF_ASSERT_CONSTRUCT_CALL(); + TrackerMOSSE* self = new TrackerMOSSE(); +#if CV_VERSION_GREATER_EQUAL(4, 5, 2) + self->tracker = cv::legacy::TrackerMOSSE::create(); +#else // CV_VERSION_GREATER_EQUAL(4, 5, 2) + self->tracker = cv::TrackerMOSSE::create(); +#endif // CV_VERSION_GREATER_EQUAL(4, 5, 2) + self->Wrap(info.Holder()); + info.GetReturnValue().Set(info.Holder()); +}; +#endif // CV_VERSION_GREATER_EQUAL(3, 4, 0) + +Nan::Persistent TrackerTLD::constructor; + +NAN_MODULE_INIT(TrackerTLD::Init) { + v8::Local ctor = Nan::New(TrackerTLD::New); + v8::Local instanceTemplate = ctor->InstanceTemplate(); + Tracker::Init(ctor); + constructor.Reset(ctor); + ctor->SetClassName(FF::newString("TrackerTLD")); + instanceTemplate->SetInternalFieldCount(1); + Nan::Set(target, FF::newString("TrackerTLD"), FF::getFunction(ctor)); +}; + +NAN_METHOD(TrackerTLD::New) { + FF::TryCatch tryCatch("TrackerTLD::New"); + FF_ASSERT_CONSTRUCT_CALL(); + TrackerTLD* self = new TrackerTLD(); +#if CV_VERSION_GREATER_EQUAL(4, 5, 2) + self->tracker = cv::legacy::TrackerTLD::create(); +#elif CV_VERSION_GREATER_EQUAL(3, 3, 0) + self->tracker = cv::TrackerTLD::create(); +#else // CV_VERSION_GREATER_EQUAL(3, 3, 0) + self->tracker = cv::TrackerTLD::createTracker(); +#endif // CV_VERSION_GREATER_EQUAL(3, 3, 0) + self->Wrap(info.Holder()); + info.GetReturnValue().Set(info.Holder()); +}; + +#endif // HAVE_OPENCV_TRACKING diff --git a/cc/tracking/Trackers/TrackerLegacy.h b/cc/tracking/Trackers/TrackerLegacy.h new file mode 100644 index 000000000..d5870594a --- /dev/null +++ b/cc/tracking/Trackers/TrackerLegacy.h @@ -0,0 +1,170 @@ +#include "../Tracker.h" + +/** + * @brief merge legacy tracker classes into one file + * - TrackerCSRT + * - TrackerKCF + * - TrackerMedianFlow + * - TrackerMIL + * - TrackerMOSSE + * - TrackerTLD + * + * those classes will not evove in the future, so they are considered legacy + */ + +#ifndef __FF_TRACKERLEGACY_H__ +#define __FF_TRACKERLEGACY_H__ + + +class TrackerBoosting : public Tracker { +public: +#if CV_VERSION_GREATER_EQUAL(4, 5, 2) + cv::Ptr tracker; +#else + cv::Ptr tracker; +#endif + static NAN_MODULE_INIT(Init); + static NAN_METHOD(New); + static Nan::Persistent constructor; +#if CV_VERSION_GREATER_EQUAL(4, 5, 2) + cv::Ptr getTracker() +#else + cv::Ptr getTracker() +#endif + { return tracker; } +}; + +#if CV_VERSION_GREATER_EQUAL(3, 4, 1) +class TrackerCSRT : public Tracker { +public: +#if CV_VERSION_GREATER_EQUAL(4, 5, 2) + cv::Ptr tracker; +#else + cv::Ptr tracker; +#endif + static NAN_MODULE_INIT(Init); + static NAN_METHOD(New); + static Nan::Persistent constructor; +#if CV_VERSION_GREATER_EQUAL(4, 5, 2) + cv::Ptr getTracker() +#else + cv::Ptr getTracker() +#endif + { return tracker; } +}; +#endif + +#if CV_VERSION_GREATER_EQUAL(3, 1, 0) +class TrackerKCF : public Tracker { +public: +#if CV_VERSION_GREATER_EQUAL(4, 5, 2) + cv::Ptr tracker; +#else + cv::Ptr tracker; +#endif + + static NAN_MODULE_INIT(Init); + static NAN_METHOD(New); + + static Nan::Persistent constructor; + +#if CV_VERSION_GREATER_EQUAL(4, 5, 2) + cv::Ptr getTracker() +#else + cv::Ptr getTracker() +#endif + { return tracker; } +}; +#endif + + +class TrackerMedianFlow : public Tracker { +public: +#if CV_VERSION_GREATER_EQUAL(4, 5, 2) + cv::Ptr tracker; +#else + cv::Ptr tracker; +#endif + static NAN_MODULE_INIT(Init); + static NAN_METHOD(New); + static Nan::Persistent constructor; +#if CV_VERSION_GREATER_EQUAL(4, 5, 2) + cv::Ptr getTracker() +#else + cv::Ptr getTracker() +#endif + { return tracker;} +}; + + +class TrackerMIL : public Tracker { +public: +#if CV_VERSION_GREATER_EQUAL(4, 5, 2) + cv::Ptr tracker; +#else + cv::Ptr tracker; +#endif + + static NAN_MODULE_INIT(Init); + static NAN_METHOD(New); + + static Nan::Persistent constructor; + +#if CV_VERSION_GREATER_EQUAL(4, 5, 2) + cv::Ptr getTracker() +#else + cv::Ptr getTracker() +#endif + { return tracker; } +}; + + +// Ensure that TrackerNano is only defined for OpenCV 3.4.0 or greater +#if CV_VERSION_GREATER_EQUAL(3, 4, 0) + +class TrackerMOSSE : public Tracker { +public: +#if CV_VERSION_GREATER_EQUAL(4, 5, 2) + cv::Ptr tracker; +#else // CV_VERSION_GREATER_EQUAL(4, 5, 2) + cv::Ptr tracker; +#endif // CV_VERSION_GREATER_EQUAL(4, 5, 2) + + static NAN_MODULE_INIT(Init); + static NAN_METHOD(New); + + static Nan::Persistent constructor; + +#if CV_VERSION_GREATER_EQUAL(4, 5, 2) + cv::Ptr getTracker() +#else + cv::Ptr getTracker() +#endif + { return tracker; } +}; + +#endif // CV_VERSION_GREATER_EQUAL(3, 4, 0) + + +class TrackerTLD : public Tracker { +public: +#if CV_VERSION_GREATER_EQUAL(4, 5, 2) + cv::Ptr tracker; +#else // CV_VERSION_GREATER_EQUAL(4, 5, 2) + cv::Ptr tracker; +#endif // CV_VERSION_GREATER_EQUAL(4, 5, 2) + + static NAN_MODULE_INIT(Init); + static NAN_METHOD(New); + + static Nan::Persistent constructor; + +#if CV_VERSION_GREATER_EQUAL(4, 5, 2) + cv::Ptr getTracker() +#else + cv::Ptr getTracker() +#endif + { return tracker; } +}; + +#endif diff --git a/cc/tracking/Trackers/TrackerLegacyParams.cc b/cc/tracking/Trackers/TrackerLegacyParams.cc new file mode 100644 index 000000000..59ea52981 --- /dev/null +++ b/cc/tracking/Trackers/TrackerLegacyParams.cc @@ -0,0 +1,171 @@ +#include "opencv_modules.h" + +#ifdef HAVE_OPENCV_TRACKING + +#include "TrackerLegacyParams.h" + +Nan::Persistent TrackerBoostingParams::constructor; + +NAN_MODULE_INIT(TrackerBoostingParams::Init) { + v8::Local ctor = Nan::New(TrackerBoostingParams::New); + v8::Local instanceTemplate = ctor->InstanceTemplate(); + + constructor.Reset(ctor); + ctor->SetClassName(FF::newString("TrackerBoostingParams")); + instanceTemplate->SetInternalFieldCount(1); + + Nan::SetAccessor(instanceTemplate, FF::newString("numClassifiers"), numClassifiers_getter, numClassifiers_setter); + Nan::SetAccessor(instanceTemplate, FF::newString("samplerOverlap"), samplerOverlap_getter, samplerOverlap_setter); + Nan::SetAccessor(instanceTemplate, FF::newString("samplerSearchFactor"), samplerSearchFactor_getter, samplerSearchFactor_setter); + Nan::SetAccessor(instanceTemplate, FF::newString("iterationInit"), iterationInit_getter, iterationInit_setter); + Nan::SetAccessor(instanceTemplate, FF::newString("featureSetNumFeatures"), featureSetNumFeatures_getter, featureSetNumFeatures_setter); + + Nan::Set(target, FF::newString("TrackerBoostingParams"), FF::getFunction(ctor)); +}; + +NAN_METHOD(TrackerBoostingParams::New) { + FF::TryCatch tryCatch("TrackerBoostingParams::New"); + FF_ASSERT_CONSTRUCT_CALL(); + TrackerBoostingParams* self = new TrackerBoostingParams(); +#if CV_VERSION_GREATER_EQUAL(4, 5, 2) + self->self = cv::legacy::TrackerBoosting::Params(); +#else + self->self = cv::TrackerBoosting::Params(); +#endif + self->Wrap(info.Holder()); + info.GetReturnValue().Set(info.Holder()); +}; + + +#if CV_VERSION_GREATER_EQUAL(3, 4, 1) + +Nan::Persistent TrackerCSRTParams::constructor; + +NAN_MODULE_INIT(TrackerCSRTParams::Init) { + v8::Local ctor = Nan::New(TrackerCSRTParams::New); + v8::Local instanceTemplate = ctor->InstanceTemplate(); + + constructor.Reset(ctor); + ctor->SetClassName(FF::newString("TrackerCSRTParams")); + instanceTemplate->SetInternalFieldCount(1); + + Nan::SetAccessor(instanceTemplate, FF::newString("admm_iterations"), admm_iterations_getter, admm_iterations_setter); + Nan::SetAccessor(instanceTemplate, FF::newString("background_ratio"), background_ratio_getter, background_ratio_setter); + Nan::SetAccessor(instanceTemplate, FF::newString("cheb_attenuation"), cheb_attenuation_getter, cheb_attenuation_setter); + Nan::SetAccessor(instanceTemplate, FF::newString("filter_lr"), filter_lr_getter, filter_lr_setter); + Nan::SetAccessor(instanceTemplate, FF::newString("gsl_sigma"), gsl_sigma_getter, gsl_sigma_setter); + Nan::SetAccessor(instanceTemplate, FF::newString("histogram_bins"), histogram_bins_getter, histogram_bins_setter); + Nan::SetAccessor(instanceTemplate, FF::newString("histogram_lr"), histogram_lr_getter, histogram_lr_setter); + Nan::SetAccessor(instanceTemplate, FF::newString("hog_clip"), hog_clip_getter, hog_clip_setter); + Nan::SetAccessor(instanceTemplate, FF::newString("hog_orientations"), hog_orientations_getter, hog_orientations_setter); + Nan::SetAccessor(instanceTemplate, FF::newString("kaiser_alpha"), kaiser_alpha_getter, kaiser_alpha_setter); + Nan::SetAccessor(instanceTemplate, FF::newString("num_hog_channels_used"), num_hog_channels_used_getter, num_hog_channels_used_setter); + Nan::SetAccessor(instanceTemplate, FF::newString("number_of_scales"), number_of_scales_getter, number_of_scales_setter); + Nan::SetAccessor(instanceTemplate, FF::newString("padding"), padding_getter, padding_setter); +#if CV_VERSION_GREATER_EQUAL(3, 4, 4) + Nan::SetAccessor(instanceTemplate, FF::newString("psr_threshold"), psr_threshold_getter, psr_threshold_setter); +#endif // CV_VERSION_GREATER_EQUAL(3, 4, 4) + Nan::SetAccessor(instanceTemplate, FF::newString("scale_lr"), scale_lr_getter, scale_lr_setter); + Nan::SetAccessor(instanceTemplate, FF::newString("scale_model_max_area"), scale_model_max_area_getter, scale_model_max_area_setter); + Nan::SetAccessor(instanceTemplate, FF::newString("scale_sigma_factor"), scale_sigma_factor_getter, scale_sigma_factor_setter); + Nan::SetAccessor(instanceTemplate, FF::newString("scale_step"), scale_step_getter, scale_step_setter); + Nan::SetAccessor(instanceTemplate, FF::newString("template_size"), template_size_getter, template_size_setter); + Nan::SetAccessor(instanceTemplate, FF::newString("use_channel_weights"), use_channel_weights_getter, use_channel_weights_setter); + Nan::SetAccessor(instanceTemplate, FF::newString("use_color_names"), use_color_names_getter, use_color_names_setter); + Nan::SetAccessor(instanceTemplate, FF::newString("use_gray"), use_gray_getter, use_gray_setter); + Nan::SetAccessor(instanceTemplate, FF::newString("use_hog"), use_hog_getter, use_hog_setter); + Nan::SetAccessor(instanceTemplate, FF::newString("use_rgb"), use_rgb_getter, use_rgb_setter); + Nan::SetAccessor(instanceTemplate, FF::newString("use_segmentation"), use_segmentation_getter, use_segmentation_setter); + Nan::SetAccessor(instanceTemplate, FF::newString("weights_lr"), weights_lr_getter, weights_lr_setter); + Nan::SetAccessor(instanceTemplate, FF::newString("window_function"), window_function_getter, window_function_setter); + + Nan::Set(target, FF::newString("TrackerCSRTParams"), FF::getFunction(ctor)); +}; + +NAN_METHOD(TrackerCSRTParams::New) { + FF::TryCatch tryCatch("TrackerCSRTParams::New"); + FF_ASSERT_CONSTRUCT_CALL(); + TrackerCSRTParams* self = new TrackerCSRTParams(); + self->self = cv::TrackerCSRT::Params(); + self->Wrap(info.Holder()); + info.GetReturnValue().Set(info.Holder()); +}; + +#endif // CV_VERSION_GREATER_EQUAL(3, 4, 1) + + +#if CV_VERSION_GREATER_EQUAL(3, 1, 0) + +Nan::Persistent TrackerKCFParams::constructor; + +NAN_MODULE_INIT(TrackerKCFParams::Init) { + v8::Local ctor = Nan::New(TrackerKCFParams::New); + v8::Local instanceTemplate = ctor->InstanceTemplate(); + + constructor.Reset(ctor); + ctor->SetClassName(FF::newString("TrackerKCFParams")); + instanceTemplate->SetInternalFieldCount(1); + + Nan::SetAccessor(instanceTemplate, FF::newString("sigma"), sigma_getter, sigma_setter); + Nan::SetAccessor(instanceTemplate, FF::newString("lambda"), lambda_getter, lambda_setter); + Nan::SetAccessor(instanceTemplate, FF::newString("interp_factor"), interp_factor_getter, interp_factor_setter); + Nan::SetAccessor(instanceTemplate, FF::newString("output_sigma_factor"), output_sigma_factor_getter, output_sigma_factor_setter); + Nan::SetAccessor(instanceTemplate, FF::newString("pca_learning_rate"), pca_learning_rate_getter, pca_learning_rate_setter); + Nan::SetAccessor(instanceTemplate, FF::newString("resize"), resize_getter, resize_setter); + Nan::SetAccessor(instanceTemplate, FF::newString("split_coeff"), split_coeff_getter, split_coeff_setter); + Nan::SetAccessor(instanceTemplate, FF::newString("wrap_kernel"), wrap_kernel_getter, wrap_kernel_setter); + Nan::SetAccessor(instanceTemplate, FF::newString("compress_feature"), compress_feature_getter, compress_feature_setter); + Nan::SetAccessor(instanceTemplate, FF::newString("max_patch_size"), max_patch_size_getter, max_patch_size_setter); + Nan::SetAccessor(instanceTemplate, FF::newString("compressed_size"), compressed_size_getter, compressed_size_setter); + Nan::SetAccessor(instanceTemplate, FF::newString("desc_pca"), desc_pca_getter, desc_pca_setter); + Nan::SetAccessor(instanceTemplate, FF::newString("desc_npca"), desc_npca_getter, desc_npca_setter); +#if CV_VERSION_GREATER_EQUAL(3, 3, 0) + Nan::SetAccessor(instanceTemplate, FF::newString("detect_thresh"), detect_thresh_getter, detect_thresh_setter); +#endif + Nan::Set(target, FF::newString("TrackerKCFParams"), FF::getFunction(ctor)); +}; + +NAN_METHOD(TrackerKCFParams::New) { + FF::TryCatch tryCatch("TrackerKCFParams::New"); + FF_ASSERT_CONSTRUCT_CALL(); + TrackerKCFParams* self = new TrackerKCFParams(); + self->self = cv::TrackerKCF::Params(); + self->Wrap(info.Holder()); + info.GetReturnValue().Set(info.Holder()); +}; + +#endif // CV_VERSION_GREATER_EQUAL(3, 1, 0) + + +Nan::Persistent TrackerMILParams::constructor; + +NAN_MODULE_INIT(TrackerMILParams::Init) { + v8::Local ctor = Nan::New(TrackerMILParams::New); + v8::Local instanceTemplate = ctor->InstanceTemplate(); + + constructor.Reset(ctor); + ctor->SetClassName(FF::newString("TrackerMILParams")); + instanceTemplate->SetInternalFieldCount(1); + + Nan::SetAccessor(instanceTemplate, FF::newString("samplerInitInRadius"), samplerInitInRadius_getter, samplerInitInRadius_setter); + Nan::SetAccessor(instanceTemplate, FF::newString("samplerSearchWinSize"), samplerSearchWinSize_getter, samplerSearchWinSize_setter); + Nan::SetAccessor(instanceTemplate, FF::newString("samplerTrackInRadius"), samplerTrackInRadius_getter, samplerTrackInRadius_setter); + Nan::SetAccessor(instanceTemplate, FF::newString("samplerInitMaxNegNum"), samplerInitMaxNegNum_getter, samplerInitMaxNegNum_setter); + Nan::SetAccessor(instanceTemplate, FF::newString("samplerTrackMaxPosNum"), samplerTrackMaxPosNum_getter, samplerTrackMaxPosNum_setter); + Nan::SetAccessor(instanceTemplate, FF::newString("samplerTrackMaxNegNum"), samplerTrackMaxNegNum_getter, samplerTrackMaxNegNum_setter); + Nan::SetAccessor(instanceTemplate, FF::newString("featureSetNumFeatures"), featureSetNumFeatures_getter, featureSetNumFeatures_setter); + + Nan::Set(target, FF::newString("TrackerMILParams"), FF::getFunction(ctor)); +}; + +NAN_METHOD(TrackerMILParams::New) { + FF::TryCatch tryCatch("TrackerMILParams::New"); + FF_ASSERT_CONSTRUCT_CALL(); + TrackerMILParams* self = new TrackerMILParams(); + self->self = cv::TrackerMIL::Params(); + self->Wrap(info.Holder()); + info.GetReturnValue().Set(info.Holder()); +}; + + +#endif // HAVE_OPENCV_TRACKING diff --git a/cc/tracking/Trackers/TrackerLegacyParams.h b/cc/tracking/Trackers/TrackerLegacyParams.h new file mode 100644 index 000000000..def815e72 --- /dev/null +++ b/cc/tracking/Trackers/TrackerLegacyParams.h @@ -0,0 +1,138 @@ +#include "macros.h" +#include +#if CV_VERSION_GREATER_EQUAL(4, 5, 2) +#include +#endif + +#ifndef __FF_TRACKERLEGACYPARAMS_H__ +#define __FF_TRACKERLEGACYPARAMS_H__ + +#if CV_VERSION_GREATER_EQUAL(4, 5, 2) +class TrackerBoostingParams : public FF::ObjectWrap +#else +class TrackerBoostingParams : public FF::ObjectWrap +#endif +{ + public: + static Nan::Persistent constructor; + + static const char* getClassName() { + return "TrackerBoostingParams"; + } + + static NAN_MODULE_INIT(Init); + static NAN_METHOD(New); + + FF_ACCESSORS(numClassifiers, FF::IntConverter); + FF_ACCESSORS(samplerOverlap, FF::FloatConverter); + FF_ACCESSORS(samplerSearchFactor, FF::FloatConverter); + FF_ACCESSORS(iterationInit, FF::IntConverter); + FF_ACCESSORS(featureSetNumFeatures, FF::IntConverter); +}; + + +#if CV_VERSION_GREATER_EQUAL(3, 4, 1) + +class TrackerCSRTParams : public FF::ObjectWrap { +public: + static Nan::Persistent constructor; + + static const char* getClassName() { + return "TrackerBoostingParams"; + } + + FF_ACCESSORS(admm_iterations, FF::IntConverter); + FF_ACCESSORS(background_ratio, FF::IntConverter); + FF_ACCESSORS(histogram_bins, FF::IntConverter); + FF_ACCESSORS(histogram_lr, FF::FloatConverter); + FF_ACCESSORS(number_of_scales, FF::IntConverter); + FF_ACCESSORS(scale_sigma_factor, FF::FloatConverter); + FF_ACCESSORS(scale_model_max_area, FF::FloatConverter); + FF_ACCESSORS(scale_lr, FF::FloatConverter); + FF_ACCESSORS(cheb_attenuation, FF::FloatConverter); + FF_ACCESSORS(kaiser_alpha, FF::FloatConverter); + FF_ACCESSORS(filter_lr, FF::FloatConverter); + FF_ACCESSORS(gsl_sigma, FF::FloatConverter); + FF_ACCESSORS(hog_clip, FF::FloatConverter); + FF_ACCESSORS(hog_orientations, FF::FloatConverter); + FF_ACCESSORS(padding, FF::FloatConverter); + FF_ACCESSORS(num_hog_channels_used, FF::IntConverter); + FF_ACCESSORS(scale_step, FF::FloatConverter); + FF_ACCESSORS(template_size, FF::FloatConverter); + FF_ACCESSORS(use_channel_weights, FF::BoolConverter); + FF_ACCESSORS(use_color_names, FF::BoolConverter); + FF_ACCESSORS(use_gray, FF::BoolConverter); + FF_ACCESSORS(use_hog, FF::BoolConverter); + FF_ACCESSORS(use_rgb, FF::BoolConverter); + FF_ACCESSORS(use_segmentation, FF::BoolConverter); + FF_ACCESSORS(weights_lr, FF::FloatConverter); + FF_ACCESSORS(window_function, FF::StringConverter); + +#if CV_VERSION_GREATER_EQUAL(3, 4, 4) + FF_ACCESSORS(psr_threshold, FF::FloatConverter); +#endif // CV_VERSION_GREATER_EQUAL(3, 4, 4) + + static NAN_MODULE_INIT(Init); + static NAN_METHOD(New); +}; + +#endif // CV_VERSION_GREATER_EQUAL(3, 4, 1) + + +#if CV_VERSION_GREATER_EQUAL(3, 1, 0) + +class TrackerKCFParams : public FF::ObjectWrap { +public: + static Nan::Persistent constructor; + + static const char* getClassName() { + return "TrackerKCFParams"; + } + + FF_ACCESSORS(sigma, FF::FloatConverter); + FF_ACCESSORS(lambda, FF::FloatConverter); + FF_ACCESSORS(interp_factor, FF::FloatConverter); + FF_ACCESSORS(output_sigma_factor, FF::FloatConverter); + FF_ACCESSORS(pca_learning_rate, FF::FloatConverter); + FF_ACCESSORS(resize, FF::BoolConverter); + FF_ACCESSORS(split_coeff, FF::BoolConverter); + FF_ACCESSORS(wrap_kernel, FF::BoolConverter); + FF_ACCESSORS(compress_feature, FF::BoolConverter); + FF_ACCESSORS(max_patch_size, FF::IntConverter); + FF_ACCESSORS(compressed_size, FF::IntConverter); + FF_ACCESSORS(desc_pca, FF::UintConverter); + FF_ACCESSORS(desc_npca, FF::UintConverter); + +#if CV_VERSION_GREATER_EQUAL(3, 3, 0) + FF_ACCESSORS(detect_thresh, FF::FloatConverter); +#endif + + static NAN_MODULE_INIT(Init); + static NAN_METHOD(New); +}; + +#endif // CV_VERSION_GREATER_EQUAL(3, 1, 0) + + +class TrackerMILParams : public FF::ObjectWrap { +public: + static Nan::Persistent constructor; + + static const char* getClassName() { + return "TrackerMILParams"; + } + + FF_ACCESSORS(samplerInitInRadius, FF::FloatConverter); + FF_ACCESSORS(samplerSearchWinSize, FF::FloatConverter); + FF_ACCESSORS(samplerTrackInRadius, FF::FloatConverter); + FF_ACCESSORS(samplerInitMaxNegNum, FF::IntConverter); + FF_ACCESSORS(samplerTrackMaxPosNum, FF::IntConverter); + FF_ACCESSORS(samplerTrackMaxNegNum, FF::IntConverter); + FF_ACCESSORS(featureSetNumFeatures, FF::IntConverter); + + static NAN_MODULE_INIT(Init); + static NAN_METHOD(New); +}; + + +#endif // __FF_TRACKERLEGACYPARAMS_H__ diff --git a/cc/tracking/Trackers/TrackerMIL.cc b/cc/tracking/Trackers/TrackerMIL.cc deleted file mode 100644 index 1d33f03eb..000000000 --- a/cc/tracking/Trackers/TrackerMIL.cc +++ /dev/null @@ -1,49 +0,0 @@ -#include "opencv_modules.h" - -#ifdef HAVE_OPENCV_TRACKING - -#include "TrackerMIL.h" -#include "TrackerMILParams.h" - -Nan::Persistent TrackerMIL::constructor; - -NAN_MODULE_INIT(TrackerMIL::Init) { - v8::Local ctor = Nan::New(TrackerMIL::New); - v8::Local instanceTemplate = ctor->InstanceTemplate(); - - Tracker::Init(ctor); - TrackerMILParams::Init(target); - - constructor.Reset(ctor); - ctor->SetClassName(FF::newString("TrackerMIL")); - instanceTemplate->SetInternalFieldCount(1); - - Nan::Set(target, FF::newString("TrackerMIL"), FF::getFunction(ctor)); -}; - -NAN_METHOD(TrackerMIL::New) { - FF::TryCatch tryCatch("TrackerMIL::New"); - FF_ASSERT_CONSTRUCT_CALL(); - -#if CV_VERSION_GREATER_EQUAL(4, 5, 2) - cv::legacy::TrackerMIL::Params params; -#else - cv::TrackerMIL::Params params; -#endif - if (TrackerMILParams::Converter::optArg(0, ¶ms, info)) { - return tryCatch.reThrow(); - } - - TrackerMIL* self = new TrackerMIL(); -#if CV_VERSION_GREATER_EQUAL(4, 5, 2) - self->tracker = cv::legacy::TrackerMIL::create(params); -#elif CV_VERSION_GREATER_EQUAL(3, 3, 0) - self->tracker = cv::TrackerMIL::create(params); -#else - self->tracker = cv::TrackerMIL::createTracker(params); -#endif - self->Wrap(info.Holder()); - info.GetReturnValue().Set(info.Holder()); -}; - -#endif diff --git a/cc/tracking/Trackers/TrackerMIL.h b/cc/tracking/Trackers/TrackerMIL.h deleted file mode 100644 index 8e72cdc79..000000000 --- a/cc/tracking/Trackers/TrackerMIL.h +++ /dev/null @@ -1,30 +0,0 @@ -#include "../Tracker.h" - -#ifndef __FF_TRACKERMIL_H__ -#define __FF_TRACKERMIL_H__ - -class TrackerMIL : public Tracker { -public: -#if CV_VERSION_GREATER_EQUAL(4, 5, 2) - cv::Ptr tracker; -#else - cv::Ptr tracker; -#endif - - static NAN_MODULE_INIT(Init); - static NAN_METHOD(New); - - static Nan::Persistent constructor; - -#if CV_VERSION_GREATER_EQUAL(4, 5, 2) - cv::Ptr getTracker() -#else - cv::Ptr getTracker() -#endif - { - return tracker; - } -} -; - -#endif diff --git a/cc/tracking/Trackers/TrackerMILParams.cc b/cc/tracking/Trackers/TrackerMILParams.cc deleted file mode 100644 index ce0d5ef75..000000000 --- a/cc/tracking/Trackers/TrackerMILParams.cc +++ /dev/null @@ -1,37 +0,0 @@ -#include "opencv_modules.h" - -#ifdef HAVE_OPENCV_TRACKING - -#include "TrackerMILParams.h" - -Nan::Persistent TrackerMILParams::constructor; - -NAN_MODULE_INIT(TrackerMILParams::Init) { - v8::Local ctor = Nan::New(TrackerMILParams::New); - v8::Local instanceTemplate = ctor->InstanceTemplate(); - - constructor.Reset(ctor); - ctor->SetClassName(FF::newString("TrackerMILParams")); - instanceTemplate->SetInternalFieldCount(1); - - Nan::SetAccessor(instanceTemplate, FF::newString("samplerInitInRadius"), samplerInitInRadius_getter, samplerInitInRadius_setter); - Nan::SetAccessor(instanceTemplate, FF::newString("samplerSearchWinSize"), samplerSearchWinSize_getter, samplerSearchWinSize_setter); - Nan::SetAccessor(instanceTemplate, FF::newString("samplerTrackInRadius"), samplerTrackInRadius_getter, samplerTrackInRadius_setter); - Nan::SetAccessor(instanceTemplate, FF::newString("samplerInitMaxNegNum"), samplerInitMaxNegNum_getter, samplerInitMaxNegNum_setter); - Nan::SetAccessor(instanceTemplate, FF::newString("samplerTrackMaxPosNum"), samplerTrackMaxPosNum_getter, samplerTrackMaxPosNum_setter); - Nan::SetAccessor(instanceTemplate, FF::newString("samplerTrackMaxNegNum"), samplerTrackMaxNegNum_getter, samplerTrackMaxNegNum_setter); - Nan::SetAccessor(instanceTemplate, FF::newString("featureSetNumFeatures"), featureSetNumFeatures_getter, featureSetNumFeatures_setter); - - Nan::Set(target, FF::newString("TrackerMILParams"), FF::getFunction(ctor)); -}; - -NAN_METHOD(TrackerMILParams::New) { - FF::TryCatch tryCatch("TrackerMILParams::New"); - FF_ASSERT_CONSTRUCT_CALL(); - TrackerMILParams* self = new TrackerMILParams(); - self->self = cv::TrackerMIL::Params(); - self->Wrap(info.Holder()); - info.GetReturnValue().Set(info.Holder()); -}; - -#endif diff --git a/cc/tracking/Trackers/TrackerMILParams.h b/cc/tracking/Trackers/TrackerMILParams.h deleted file mode 100644 index a672a09f4..000000000 --- a/cc/tracking/Trackers/TrackerMILParams.h +++ /dev/null @@ -1,27 +0,0 @@ -#include "macros.h" -#include - -#ifndef __FF_TRACKERMILPARAMS_H__ -#define __FF_TRACKERMILPARAMS_H__ - -class TrackerMILParams : public FF::ObjectWrap { -public: - static Nan::Persistent constructor; - - static const char* getClassName() { - return "TrackerMILParams"; - } - - FF_ACCESSORS(samplerInitInRadius, FF::FloatConverter); - FF_ACCESSORS(samplerSearchWinSize, FF::FloatConverter); - FF_ACCESSORS(samplerTrackInRadius, FF::FloatConverter); - FF_ACCESSORS(samplerInitMaxNegNum, FF::IntConverter); - FF_ACCESSORS(samplerTrackMaxPosNum, FF::IntConverter); - FF_ACCESSORS(samplerTrackMaxNegNum, FF::IntConverter); - FF_ACCESSORS(featureSetNumFeatures, FF::IntConverter); - - static NAN_MODULE_INIT(Init); - static NAN_METHOD(New); -}; - -#endif \ No newline at end of file diff --git a/cc/tracking/Trackers/TrackerMOSSE.cc b/cc/tracking/Trackers/TrackerMOSSE.cc deleted file mode 100644 index 203eee691..000000000 --- a/cc/tracking/Trackers/TrackerMOSSE.cc +++ /dev/null @@ -1,41 +0,0 @@ -#include "opencv_modules.h" - -#ifdef HAVE_OPENCV_TRACKING - -#include "TrackerMOSSE.h" - -// Ensure that this code is only compiled if OpenCV is 3.4.0 or greater -#if CV_VERSION_GREATER_EQUAL(3, 4, 0) - -Nan::Persistent TrackerMOSSE::constructor; - -NAN_MODULE_INIT(TrackerMOSSE::Init) { - v8::Local ctor = Nan::New(TrackerMOSSE::New); - v8::Local instanceTemplate = ctor->InstanceTemplate(); - - Tracker::Init(ctor); - - constructor.Reset(ctor); - ctor->SetClassName(FF::newString("TrackerMOSSE")); - instanceTemplate->SetInternalFieldCount(1); - - Nan::Set(target, FF::newString("TrackerMOSSE"), FF::getFunction(ctor)); -}; - -NAN_METHOD(TrackerMOSSE::New) { - FF::TryCatch tryCatch("TrackerMOSSE::New"); - FF_ASSERT_CONSTRUCT_CALL(); - - TrackerMOSSE* self = new TrackerMOSSE(); -#if CV_VERSION_GREATER_EQUAL(4, 5, 2) - self->tracker = cv::legacy::TrackerMOSSE::create(); -#else - self->tracker = cv::TrackerMOSSE::create(); -#endif - self->Wrap(info.Holder()); - info.GetReturnValue().Set(info.Holder()); -}; - -#endif - -#endif diff --git a/cc/tracking/Trackers/TrackerMOSSE.h b/cc/tracking/Trackers/TrackerMOSSE.h deleted file mode 100644 index 26dbc5ef1..000000000 --- a/cc/tracking/Trackers/TrackerMOSSE.h +++ /dev/null @@ -1,34 +0,0 @@ -#include "../Tracker.h" - -// Ensure that TrackerNano is only defined for OpenCV 3.4.0 or greater -#if CV_VERSION_GREATER_EQUAL(3, 4, 0) - -#ifndef __FF_TRACKERMOSSE_H__ -#define __FF_TRACKERMOSSE_H__ - -class TrackerMOSSE : public Tracker { -public: -#if CV_VERSION_GREATER_EQUAL(4, 5, 2) - cv::Ptr tracker; -#else - cv::Ptr tracker; -#endif - - static NAN_MODULE_INIT(Init); - static NAN_METHOD(New); - - static Nan::Persistent constructor; - -#if CV_VERSION_GREATER_EQUAL(4, 5, 2) - cv::Ptr getTracker() -#else - cv::Ptr getTracker() -#endif - { - return tracker; - } -}; - -#endif - -#endif diff --git a/cc/tracking/Trackers/TrackerMedianFlow.cc b/cc/tracking/Trackers/TrackerMedianFlow.cc deleted file mode 100644 index 9e494e9a4..000000000 --- a/cc/tracking/Trackers/TrackerMedianFlow.cc +++ /dev/null @@ -1,48 +0,0 @@ -#include "opencv_modules.h" - -#ifdef HAVE_OPENCV_TRACKING - -#include "TrackerMedianFlow.h" - -Nan::Persistent TrackerMedianFlow::constructor; - -NAN_MODULE_INIT(TrackerMedianFlow::Init) { - v8::Local ctor = Nan::New(TrackerMedianFlow::New); - v8::Local instanceTemplate = ctor->InstanceTemplate(); - - Tracker::Init(ctor); - - constructor.Reset(ctor); - ctor->SetClassName(FF::newString("TrackerMedianFlow")); - instanceTemplate->SetInternalFieldCount(1); - - Nan::Set(target, FF::newString("TrackerMedianFlow"), FF::getFunction(ctor)); -}; - -NAN_METHOD(TrackerMedianFlow::New) { - FF::TryCatch tryCatch("TrackerMedianFlow::New"); - FF_ASSERT_CONSTRUCT_CALL(); - - TrackerMedianFlow* self = new TrackerMedianFlow(); -#if CV_VERSION_GREATER_EQUAL(4, 5, 2) - cv::legacy::TrackerMedianFlow::Params params; -#else - cv::TrackerMedianFlow::Params params; -#endif - if (FF::hasArg(info, 0) && FF::IntConverterImpl::assertType(info[0])) { - params.pointsInGrid = info[0]->ToInt32(Nan::GetCurrentContext()).ToLocalChecked()->Value(); - } - -#if CV_VERSION_GREATER_EQUAL(4, 5, 2) - self->tracker = cv::legacy::TrackerMedianFlow::create(params); -#elif CV_VERSION_GREATER_EQUAL(3, 3, 0) - self->tracker = cv::TrackerMedianFlow::create(params); -#else - self->tracker = cv::TrackerMedianFlow::createTracker(params); -#endif - - self->Wrap(info.Holder()); - info.GetReturnValue().Set(info.Holder()); -}; - -#endif diff --git a/cc/tracking/Trackers/TrackerMedianFlow.h b/cc/tracking/Trackers/TrackerMedianFlow.h deleted file mode 100644 index e0098c640..000000000 --- a/cc/tracking/Trackers/TrackerMedianFlow.h +++ /dev/null @@ -1,30 +0,0 @@ -#include "../Tracker.h" - -#ifndef __FF_TRACKERMEDIANFLOW_H__ -#define __FF_TRACKERMEDIANFLOW_H__ - -class TrackerMedianFlow : public Tracker { -public: -#if CV_VERSION_GREATER_EQUAL(4, 5, 2) - cv::Ptr tracker; -#else - cv::Ptr tracker; -#endif - - static NAN_MODULE_INIT(Init); - static NAN_METHOD(New); - - static Nan::Persistent constructor; - -#if CV_VERSION_GREATER_EQUAL(4, 5, 2) - cv::Ptr getTracker() -#else - cv::Ptr getTracker() -#endif - { - return tracker; - } -} -; - -#endif diff --git a/cc/tracking/Trackers/TrackerNano.cc b/cc/tracking/Trackers/TrackerNano.cc index 21de1cc5d..b2ec13abf 100644 --- a/cc/tracking/Trackers/TrackerNano.cc +++ b/cc/tracking/Trackers/TrackerNano.cc @@ -13,6 +13,7 @@ NAN_MODULE_INIT(TrackerNano::Init) { v8::Local ctor = Nan::New(TrackerNano::New); v8::Local instanceTemplate = ctor->InstanceTemplate(); + // TrackerNano::Init(ctor); Nan::SetPrototypeMethod(ctor, "init", TrackerNano::Init); Nan::SetPrototypeMethod(ctor, "update", TrackerNano::Update); @@ -36,7 +37,6 @@ NAN_METHOD(TrackerNano::Init) { try { TrackerNano::unwrapThis(info)->getTracker()->init(image, boundingBox); - // If no error is thrown, return true info.GetReturnValue().Set(Nan::True()); } catch (const std::exception& e) { @@ -44,7 +44,6 @@ NAN_METHOD(TrackerNano::Init) { } } - NAN_METHOD(TrackerNano::Update) { FF::TryCatch tryCatch("TrackerNano::Update"); cv::Mat image; diff --git a/cc/tracking/Trackers/TrackerTLD.cc b/cc/tracking/Trackers/TrackerTLD.cc deleted file mode 100644 index 4e85cb958..000000000 --- a/cc/tracking/Trackers/TrackerTLD.cc +++ /dev/null @@ -1,38 +0,0 @@ -#include "opencv_modules.h" - -#ifdef HAVE_OPENCV_TRACKING - -#include "TrackerTLD.h" - -Nan::Persistent TrackerTLD::constructor; - -NAN_MODULE_INIT(TrackerTLD::Init) { - v8::Local ctor = Nan::New(TrackerTLD::New); - v8::Local instanceTemplate = ctor->InstanceTemplate(); - - Tracker::Init(ctor); - - constructor.Reset(ctor); - ctor->SetClassName(FF::newString("TrackerTLD")); - instanceTemplate->SetInternalFieldCount(1); - - Nan::Set(target, FF::newString("TrackerTLD"), FF::getFunction(ctor)); -}; - -NAN_METHOD(TrackerTLD::New) { - FF::TryCatch tryCatch("TrackerTLD::New"); - FF_ASSERT_CONSTRUCT_CALL(); - - TrackerTLD* self = new TrackerTLD(); -#if CV_VERSION_GREATER_EQUAL(4, 5, 2) - self->tracker = cv::legacy::TrackerTLD::create(); -#elif CV_VERSION_GREATER_EQUAL(3, 3, 0) - self->tracker = cv::TrackerTLD::create(); -#else - self->tracker = cv::TrackerTLD::createTracker(); -#endif - self->Wrap(info.Holder()); - info.GetReturnValue().Set(info.Holder()); -}; - -#endif diff --git a/cc/tracking/Trackers/TrackerTLD.h b/cc/tracking/Trackers/TrackerTLD.h deleted file mode 100644 index 9bacae201..000000000 --- a/cc/tracking/Trackers/TrackerTLD.h +++ /dev/null @@ -1,29 +0,0 @@ -#include "../Tracker.h" - -#ifndef __FF_TRACKERTLD_H__ -#define __FF_TRACKERTLD_H__ - -class TrackerTLD : public Tracker { -public: -#if CV_VERSION_GREATER_EQUAL(4, 5, 2) - cv::Ptr tracker; -#else - cv::Ptr tracker; -#endif - - static NAN_MODULE_INIT(Init); - static NAN_METHOD(New); - - static Nan::Persistent constructor; - -#if CV_VERSION_GREATER_EQUAL(4, 5, 2) - cv::Ptr getTracker() -#else - cv::Ptr getTracker() -#endif - { - return tracker; - } -}; - -#endif diff --git a/cc/tracking/tracking.cc b/cc/tracking/tracking.cc index 0f9203916..fbe5924ed 100644 --- a/cc/tracking/tracking.cc +++ b/cc/tracking/tracking.cc @@ -2,14 +2,10 @@ #ifdef HAVE_OPENCV_TRACKING -#include "./Trackers/TrackerBoosting.h" -#include "./Trackers/TrackerMIL.h" -#include "./Trackers/TrackerMedianFlow.h" -#include "./Trackers/TrackerTLD.h" +#include "./Trackers/TrackerLegacy.h" #include "tracking.h" #if CV_VERSION_GREATER_EQUAL(3, 1, 0) -#include "./Trackers/TrackerKCF.h" #include "MultiTracker.h" #endif @@ -17,13 +13,6 @@ #include "./Trackers/TrackerGOTURN.h" #endif -#if CV_VERSION_GREATER_EQUAL(3, 4, 0) -#include "./Trackers/TrackerMOSSE.h" -#endif -#if CV_VERSION_GREATER_EQUAL(3, 4, 1) -#include "./Trackers/TrackerCSRT.h" -#endif - #if CV_VERSION_GREATER_EQUAL(4, 7, 0) #include "./Trackers/TrackerNano.h" #endif @@ -51,6 +40,7 @@ NAN_MODULE_INIT(Tracking::Init) { #if CV_VERSION_GREATER_EQUAL(3, 4, 0) TrackerMOSSE::Init(target); #endif + #if CV_VERSION_GREATER_EQUAL(3, 4, 1) TrackerCSRT::Init(target); #endif diff --git a/cjs/lib/opencv4nodejs.js b/cjs/lib/opencv4nodejs.js index 770906b31..ce4bfd5a9 100644 --- a/cjs/lib/opencv4nodejs.js +++ b/cjs/lib/opencv4nodejs.js @@ -20,8 +20,8 @@ exports.goodFeaturesToTrack = exports.cannyAsync = exports.canny = exports.apply exports.CAP_PROP_ISO_SPEED = exports.CAP_PROP_GUID = exports.CAP_PROP_FOCUS = exports.CAP_PROP_ZOOM = exports.CAP_PROP_WHITE_BALANCE_RED_V = exports.CAP_PROP_TRIGGER_DELAY = exports.CAP_PROP_TRIGGER = exports.CAP_PROP_TEMPERATURE = exports.CAP_PROP_GAMMA = exports.CAP_PROP_AUTO_EXPOSURE = exports.CAP_PROP_SHARPNESS = exports.CAP_PROP_MONOCHROME = exports.CAP_PROP_RECTIFICATION = exports.CAP_PROP_WHITE_BALANCE_BLUE_U = exports.CAP_PROP_CONVERT_RGB = exports.CAP_PROP_EXPOSURE = exports.CAP_PROP_GAIN = exports.CAP_PROP_HUE = exports.CAP_PROP_SATURATION = exports.CAP_PROP_CONTRAST = exports.CAP_PROP_BRIGHTNESS = exports.CAP_PROP_MODE = exports.CAP_PROP_FORMAT = exports.CAP_PROP_FRAME_COUNT = exports.CAP_PROP_FOURCC = exports.CAP_PROP_FPS = exports.CAP_PROP_FRAME_HEIGHT = exports.CAP_PROP_FRAME_WIDTH = exports.CAP_PROP_POS_AVI_RATIO = exports.CAP_PROP_POS_FRAMES = exports.CAP_PROP_POS_MSEC = exports.Contour = exports.Moments = exports.calcHistAsync = exports.calcHist = exports.accumulateWeightedAsync = exports.accumulateWeighted = exports.accumulateSquareAsync = exports.accumulateSquare = exports.accumulateProductAsync = exports.accumulateProduct = exports.accumulateAsync = exports.accumulate = exports.medianBlurAsync = exports.medianBlur = exports.gaussianBlurAsync = exports.gaussianBlur = exports.blurAsync = exports.blur = exports.goodFeaturesToTrackAsync = void 0; exports.destroyWindow = exports.imdecode = exports.imencode = exports.waitKeyEx = exports.waitKey = exports.imwrite = exports.imshowWait = exports.imshow = exports.imread = exports.VideoWriter = exports.VideoCapture = exports.VIDEOWRITER_PROP_NSTRIPES = exports.VIDEOWRITER_PROP_FRAMEBYTES = exports.VIDEOWRITER_PROP_QUALITY = exports.CAP_ARAVIS = exports.CAP_IMAGES = exports.CAP_FFMPEG = exports.CAP_GSTREAMER = exports.CAP_GPHOTO2 = exports.CAP_OPENNI2_ASUS = exports.CAP_OPENNI2 = exports.CAP_INTELPERC = exports.CAP_WINRT = exports.CAP_MSMF = exports.CAP_GIGANETIX = exports.CAP_AVFOUNDATION = exports.CAP_XIAPI = exports.CAP_ANDROID = exports.CAP_OPENNI_ASUS = exports.CAP_OPENNI = exports.CAP_PVAPI = exports.CAP_DSHOW = exports.CAP_UNICAP = exports.CAP_QT = exports.CAP_CMU1394 = exports.CAP_DC1394 = exports.CAP_IEEE1394 = exports.CAP_FIREWIRE = exports.CAP_V4L2 = exports.CAP_V4L = exports.CAP_VFW = exports.CAP_ANY = exports.CAP_PROP_AUTOFOCUS = exports.CAP_PROP_BUFFERSIZE = exports.CAP_PROP_SETTINGS = exports.CAP_PROP_IRIS = exports.CAP_PROP_ROLL = exports.CAP_PROP_TILT = exports.CAP_PROP_PAN = exports.CAP_PROP_BACKLIGHT = void 0; exports.HOGHistogramNormType = exports.HOGDescriptor = exports.CascadeClassifier = exports.SVM = exports.StatModel = exports.ParamGrid = exports.TrainData = exports.statModel = exports.ml = exports.IMWRITE_PNG_STRATEGY_FIXED = exports.IMWRITE_PNG_STRATEGY_RLE = exports.IMWRITE_PNG_STRATEGY_HUFFMAN_ONLY = exports.IMWRITE_PNG_STRATEGY_FILTERED = exports.IMWRITE_PNG_STRATEGY_DEFAULT = exports.IMWRITE_PAM_FORMAT_RGB_ALPHA = exports.IMWRITE_PAM_FORMAT_RGB = exports.IMWRITE_PAM_FORMAT_GRAYSCALE_ALPHA = exports.IMWRITE_PAM_FORMAT_GRAYSCALE = exports.IMWRITE_PAM_FORMAT_BLACKANDWHITE = exports.IMWRITE_PAM_FORMAT_NULL = exports.IMWRITE_PAM_TUPLETYPE = exports.IMREAD_IGNORE_ORIENTATION = exports.IMREAD_REDUCED_COLOR_8 = exports.IMREAD_REDUCED_GRAYSCALE_8 = exports.IMREAD_REDUCED_COLOR_4 = exports.IMREAD_REDUCED_GRAYSCALE_4 = exports.IMREAD_REDUCED_COLOR_2 = exports.IMREAD_REDUCED_GRAYSCALE_2 = exports.IMWRITE_WEBP_QUALITY = exports.IMWRITE_PXM_BINARY = exports.IMWRITE_PNG_BILEVEL = exports.IMWRITE_PNG_STRATEGY = exports.IMWRITE_PNG_COMPRESSION = exports.IMWRITE_JPEG_CHROMA_QUALITY = exports.IMWRITE_JPEG_LUMA_QUALITY = exports.IMWRITE_JPEG_RST_INTERVAL = exports.IMWRITE_JPEG_OPTIMIZE = exports.IMWRITE_JPEG_PROGRESSIVE = exports.IMWRITE_JPEG_QUALITY = exports.IMREAD_LOAD_GDAL = exports.IMREAD_ANYCOLOR = exports.IMREAD_ANYDEPTH = exports.IMREAD_COLOR = exports.IMREAD_GRAYSCALE = exports.IMREAD_UNCHANGED = exports.imdecodeAsync = exports.imencodeAsync = exports.imwriteAsync = exports.imreadAsync = exports.destroyAllWindows = void 0; -exports.HAAR_FRONTALFACE_ALT2 = exports.HAAR_FRONTALFACE_ALT = exports.HAAR_FRONTALCATFACE_EXTENDED = exports.HAAR_FRONTALCATFACE = exports.HAAR_EYE_TREE_EYEGLASSES = exports.HAAR_EYE = exports.PHash = exports.SLICO = exports.SLIC = exports.SuperpixelLSC = exports.SuperpixelSLIC = exports.SuperpixelSEEDS = exports.SURFDetector = exports.SIFTDetector = exports.BackgroundSubtractorKNN = exports.BackgroundSubtractorMOG2 = exports.TrackerCSRT = exports.TrackerCSRTParams = exports.TrackerMOSSE = exports.TrackerGOTURN = exports.TrackerNano = exports.trackerKCFModes = exports.MultiTracker = exports.TrackerKCF = exports.TrackerKCFParams = exports.TrackerTLD = exports.TrackerMIL = exports.TrackerMILParams = exports.TrackerMedianFlow = exports.TrackerBoosting = exports.TrackerBoostingParams = exports.createOCRHMMTransitionsTableAsync = exports.createOCRHMMTransitionsTable = exports.loadOCRHMMClassifierCNNAsync = exports.loadOCRHMMClassifierCNN = exports.loadOCRHMMClassifierNMAsync = exports.loadOCRHMMClassifierNM = exports.OCRHMMClassifier = exports.OCRHMMDecoder = exports.seamlessCloneAsync = exports.seamlessClone = exports.inpaintAsync = exports.inpaint = exports.fastNlMeansDenoisingColoredAsync = exports.fastNlMeansDenoisingColored = exports.MONOCHROME_TRANSFER = exports.MIXED_CLONE = exports.NORMAL_CLONE = exports.INPAINT_TELEA = exports.INPAINT_NS = exports.DetectionROI = void 0; -exports.ORB = exports.FAST = exports.KAZE = exports.AKAZE = exports.AGAST = exports.dropOverlappingZone = exports.getScoreMax = exports.toMatTypeName = exports.getVersionString = exports.getVersion = exports.drawDetection = exports.drawTextBox = exports.LBP_SILVERWARE = exports.LBP_PROFILEFACE = exports.LBP_FRONTALFACE_IMPROVED = exports.LBP_FRONTALFACE = exports.LBP_FRONTALCATFACE = exports.HAAR_UPPERBODY = exports.HAAR_SMILE = exports.HAAR_RUSSIAN_PLATE_NUMBER = exports.HAAR_RIGHTEYE_2SPLITS = exports.HAAR_PROFILEFACE = exports.HAAR_LOWERBODY = exports.HAAR_LICENCE_PLATE_RUS_16STAGES = exports.HAAR_LEFTEYE_2SPLITS = exports.HAAR_FULLBODY = exports.HAAR_FRONTALFACE_DEFAULT = exports.HAAR_FRONTALFACE_ALT_TREE = void 0; +exports.HAAR_FRONTALFACE_ALT = exports.HAAR_FRONTALCATFACE_EXTENDED = exports.HAAR_FRONTALCATFACE = exports.HAAR_EYE_TREE_EYEGLASSES = exports.HAAR_EYE = exports.PHash = exports.SLICO = exports.SLIC = exports.SuperpixelLSC = exports.SuperpixelSLIC = exports.SuperpixelSEEDS = exports.SURFDetector = exports.SIFTDetector = exports.BackgroundSubtractorKNN = exports.BackgroundSubtractorMOG2 = exports.TrackerCSRT = exports.TrackerCSRTParams = exports.TrackerMOSSE = exports.TrackerNano = exports.TrackerGOTURN = exports.trackerKCFModes = exports.MultiTracker = exports.TrackerKCF = exports.TrackerKCFParams = exports.TrackerTLD = exports.TrackerMIL = exports.TrackerMILParams = exports.TrackerMedianFlow = exports.TrackerBoosting = exports.TrackerBoostingParams = exports.createOCRHMMTransitionsTableAsync = exports.createOCRHMMTransitionsTable = exports.loadOCRHMMClassifierCNNAsync = exports.loadOCRHMMClassifierCNN = exports.loadOCRHMMClassifierNMAsync = exports.loadOCRHMMClassifierNM = exports.OCRHMMClassifier = exports.OCRHMMDecoder = exports.seamlessCloneAsync = exports.seamlessClone = exports.inpaintAsync = exports.inpaint = exports.fastNlMeansDenoisingColoredAsync = exports.fastNlMeansDenoisingColored = exports.MONOCHROME_TRANSFER = exports.MIXED_CLONE = exports.NORMAL_CLONE = exports.INPAINT_TELEA = exports.INPAINT_NS = exports.DetectionROI = void 0; +exports.ORB = exports.FAST = exports.KAZE = exports.AKAZE = exports.AGAST = exports.dropOverlappingZone = exports.getScoreMax = exports.toMatTypeName = exports.getVersionString = exports.getVersion = exports.drawDetection = exports.drawTextBox = exports.LBP_SILVERWARE = exports.LBP_PROFILEFACE = exports.LBP_FRONTALFACE_IMPROVED = exports.LBP_FRONTALFACE = exports.LBP_FRONTALCATFACE = exports.HAAR_UPPERBODY = exports.HAAR_SMILE = exports.HAAR_RUSSIAN_PLATE_NUMBER = exports.HAAR_RIGHTEYE_2SPLITS = exports.HAAR_PROFILEFACE = exports.HAAR_LOWERBODY = exports.HAAR_LICENCE_PLATE_RUS_16STAGES = exports.HAAR_LEFTEYE_2SPLITS = exports.HAAR_FULLBODY = exports.HAAR_FRONTALFACE_DEFAULT = exports.HAAR_FRONTALFACE_ALT_TREE = exports.HAAR_FRONTALFACE_ALT2 = void 0; const node_path_1 = __importDefault(require("node:path")); const promisify_js_1 = __importDefault(require("./promisify.js")); const index_js_1 = __importDefault(require("./ext/index.js"));