From 0aac05fe3e6c6d4bd15796f9d68e4b1a36f6dd6a Mon Sep 17 00:00:00 2001 From: Wandenberg Peixoto Date: Sat, 19 Sep 2020 21:19:47 +0200 Subject: [PATCH 1/3] Fix #750 making it compatible with Opencv4.4 --- cc/xfeatures2d/SIFTDetector.h | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/cc/xfeatures2d/SIFTDetector.h b/cc/xfeatures2d/SIFTDetector.h index 1312b5f6..b9a4dee2 100644 --- a/cc/xfeatures2d/SIFTDetector.h +++ b/cc/xfeatures2d/SIFTDetector.h @@ -6,7 +6,11 @@ #ifndef __FF_SIFTDETECTOR_H__ #define __FF_SIFTDETECTOR_H__ +#if CV_VERSION_GREATER_EQUAL(4, 4, 0) +class SIFTDetector : public FeatureDetector, public FF::ObjectWrapTemplate> { +#else class SIFTDetector : public FeatureDetector, public FF::ObjectWrapTemplate> { +#endif public: static Nan::Persistent constructor; @@ -47,7 +51,11 @@ class SIFTDetector : public FeatureDetector, public FF::ObjectWrapTemplate("sigma", 1.6); executeBinding = [=]() { + #if CV_VERSION_GREATER_EQUAL(4, 4, 0) + return cv::SIFT::create( + #else return cv::xfeatures2d::SIFT::create( + #endif nFeatures->ref(), nOctaveLayers->ref(), contrastThreshold->ref(), @@ -67,4 +75,4 @@ class SIFTDetector : public FeatureDetector, public FF::ObjectWrapTemplate Date: Fri, 4 Jun 2021 18:25:35 +0200 Subject: [PATCH 2/3] add support to Opencv4.5.2 --- cc/tracking/MultiTracker.cc | 32 +++++++++-- cc/tracking/MultiTracker.h | 9 ++- cc/tracking/Tracker.h | 9 ++- cc/tracking/Trackers/TrackerBoosting.cc | 8 ++- cc/tracking/Trackers/TrackerBoosting.h | 10 +++- cc/tracking/Trackers/TrackerBoostingParams.cc | 4 ++ cc/tracking/Trackers/TrackerBoostingParams.h | 9 ++- cc/tracking/Trackers/TrackerCSRT.cc | 8 +++ cc/tracking/Trackers/TrackerCSRT.h | 10 +++- cc/tracking/Trackers/TrackerGOTURN.cc | 57 ++++++++++++++++++- cc/tracking/Trackers/TrackerGOTURN.h | 13 ++++- cc/tracking/Trackers/TrackerKCF.cc | 8 ++- cc/tracking/Trackers/TrackerKCF.h | 10 +++- cc/tracking/Trackers/TrackerMIL.cc | 8 ++- cc/tracking/Trackers/TrackerMIL.h | 10 +++- cc/tracking/Trackers/TrackerMOSSE.cc | 4 ++ cc/tracking/Trackers/TrackerMOSSE.h | 10 +++- cc/tracking/Trackers/TrackerMedianFlow.cc | 8 ++- cc/tracking/Trackers/TrackerMedianFlow.h | 10 +++- cc/tracking/Trackers/TrackerTLD.cc | 4 +- cc/tracking/Trackers/TrackerTLD.h | 10 +++- 21 files changed, 228 insertions(+), 23 deletions(-) diff --git a/cc/tracking/MultiTracker.cc b/cc/tracking/MultiTracker.cc index 3408a733..1f74abab 100644 --- a/cc/tracking/MultiTracker.cc +++ b/cc/tracking/MultiTracker.cc @@ -36,7 +36,11 @@ NAN_METHOD(MultiTracker::New) { FF::TryCatch tryCatch("MultiTracker::New"); FF_ASSERT_CONSTRUCT_CALL(); MultiTracker* self = new MultiTracker(); +#if CV_VERSION_GREATER_EQUAL(4, 5, 2) + self->setNativeObject(cv::makePtr()); +#else self->setNativeObject(cv::makePtr()); +#endif self->Wrap(info.Holder()); info.GetReturnValue().Set(info.Holder()); }; @@ -51,7 +55,9 @@ NAN_METHOD(MultiTracker::AddMIL) { ) { return tryCatch.reThrow(); } -#if CV_VERSION_GREATER_EQUAL(3, 3, 0) +#if CV_VERSION_GREATER_EQUAL(4, 5, 2) + cv::Ptr type = cv::legacy::TrackerMIL::create(); +#elif CV_VERSION_GREATER_EQUAL(3, 3, 0) cv::Ptr type = cv::TrackerMIL::create(); #else const std::string type("MIL"); @@ -70,7 +76,9 @@ NAN_METHOD(MultiTracker::AddBOOSTING) { ) { return tryCatch.reThrow(); } -#if CV_VERSION_GREATER_EQUAL(3, 3, 0) +#if CV_VERSION_GREATER_EQUAL(4, 5, 2) + cv::Ptr type = cv::legacy::TrackerBoosting::create(); +#elif CV_VERSION_GREATER_EQUAL(3, 3, 0) cv::Ptr type = cv::TrackerBoosting::create(); #else const std::string type("BOOSTING"); @@ -89,7 +97,9 @@ NAN_METHOD(MultiTracker::AddMEDIANFLOW) { ) { return tryCatch.reThrow(); } -#if CV_VERSION_GREATER_EQUAL(3, 3, 0) +#if CV_VERSION_GREATER_EQUAL(4, 5, 2) + cv::Ptr type = cv::legacy::TrackerMedianFlow::create(); +#elif CV_VERSION_GREATER_EQUAL(3, 3, 0) cv::Ptr type = cv::TrackerMedianFlow::create(); #else const std::string type("MEDIANFLOW"); @@ -108,7 +118,9 @@ NAN_METHOD(MultiTracker::AddTLD) { ) { return tryCatch.reThrow(); } -#if CV_VERSION_GREATER_EQUAL(3, 3, 0) +#if CV_VERSION_GREATER_EQUAL(4, 5, 2) + cv::Ptr type = cv::legacy::TrackerTLD::create(); +#elif CV_VERSION_GREATER_EQUAL(3, 3, 0) cv::Ptr type = cv::TrackerTLD::create(); #else const std::string type("TLD"); @@ -127,7 +139,9 @@ NAN_METHOD(MultiTracker::AddKCF) { ) { return tryCatch.reThrow(); } -#if CV_VERSION_GREATER_EQUAL(3, 3, 0) +#if CV_VERSION_GREATER_EQUAL(4, 5, 2) + cv::Ptr type = cv::legacy::TrackerKCF::create(); +#elif CV_VERSION_GREATER_EQUAL(3, 3, 0) cv::Ptr type = cv::TrackerKCF::create(); #else const std::string type("KCF"); @@ -159,7 +173,11 @@ NAN_METHOD(MultiTracker::AddMOSSE) { ) { return tryCatch.reThrow(); } +#if CV_VERSION_GREATER_EQUAL(4, 5, 2) + cv::Ptr type = cv::legacy::TrackerMOSSE::create(); +#else cv::Ptr type = cv::TrackerMOSSE::create(); +#endif bool ret = MultiTracker::unwrapSelf(info)->add(type, image, boundingBox); info.GetReturnValue().Set(Nan::New(ret)); } @@ -177,7 +195,11 @@ NAN_METHOD(MultiTracker::AddCSRT) { ) { return tryCatch.reThrow(); } +#if CV_VERSION_GREATER_EQUAL(4, 5, 2) + cv::Ptr type = cv::legacy::TrackerCSRT::create(); +#else cv::Ptr type = cv::TrackerCSRT::create(); +#endif bool ret = MultiTracker::unwrapSelf(info)->add(type, image, boundingBox); info.GetReturnValue().Set(Nan::New(ret)); } diff --git a/cc/tracking/MultiTracker.h b/cc/tracking/MultiTracker.h index dccd48af..4e02e18d 100644 --- a/cc/tracking/MultiTracker.h +++ b/cc/tracking/MultiTracker.h @@ -1,5 +1,8 @@ #include "macros.h" #include +#if CV_VERSION_GREATER_EQUAL(4, 5, 2) +#include +#endif #include "Mat.h" #include "Rect.h" @@ -8,7 +11,11 @@ #ifndef __FF_MULTITRACKER_H__ #define __FF_MULTITRACKER_H__ +#if CV_VERSION_GREATER_EQUAL(4, 5, 2) +class MultiTracker : public FF::ObjectWrap> { +#else class MultiTracker : public FF::ObjectWrap> { +#endif public: static Nan::Persistent constructor; @@ -31,4 +38,4 @@ class MultiTracker : public FF::ObjectWrap +#if CV_VERSION_GREATER_EQUAL(4, 5, 2) +#include +#endif #include "Mat.h" #include "Rect.h" @@ -8,7 +11,11 @@ class Tracker : public FF::ObjectWrapBase, public Nan::ObjectWrap { public: +#if CV_VERSION_GREATER_EQUAL(4, 5, 2) + virtual cv::Ptr getTracker() = 0; +#else virtual cv::Ptr getTracker() = 0; +#endif static void Init(v8::Local); @@ -18,4 +25,4 @@ class Tracker : public FF::ObjectWrapBase, public Nan::ObjectWrap { static NAN_METHOD(GetModel); }; -#endif \ No newline at end of file +#endif diff --git a/cc/tracking/Trackers/TrackerBoosting.cc b/cc/tracking/Trackers/TrackerBoosting.cc index e877351b..18657815 100644 --- a/cc/tracking/Trackers/TrackerBoosting.cc +++ b/cc/tracking/Trackers/TrackerBoosting.cc @@ -26,13 +26,19 @@ 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(3, 3, 0) +#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); diff --git a/cc/tracking/Trackers/TrackerBoosting.h b/cc/tracking/Trackers/TrackerBoosting.h index a9e9ed49..5a7b8e74 100644 --- a/cc/tracking/Trackers/TrackerBoosting.h +++ b/cc/tracking/Trackers/TrackerBoosting.h @@ -5,16 +5,24 @@ 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 \ No newline at end of file +#endif diff --git a/cc/tracking/Trackers/TrackerBoostingParams.cc b/cc/tracking/Trackers/TrackerBoostingParams.cc index a4ca6104..1fc270dc 100644 --- a/cc/tracking/Trackers/TrackerBoostingParams.cc +++ b/cc/tracking/Trackers/TrackerBoostingParams.cc @@ -28,7 +28,11 @@ 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()); }; diff --git a/cc/tracking/Trackers/TrackerBoostingParams.h b/cc/tracking/Trackers/TrackerBoostingParams.h index a4be57f5..5497b210 100644 --- a/cc/tracking/Trackers/TrackerBoostingParams.h +++ b/cc/tracking/Trackers/TrackerBoostingParams.h @@ -1,10 +1,17 @@ #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; @@ -22,4 +29,4 @@ class TrackerBoostingParams : public FF::ObjectWraptracker = cv::legacy::TrackerCSRT::create(params); +#else self->tracker = cv::TrackerCSRT::create(params); +#endif self->Wrap(info.Holder()); info.GetReturnValue().Set(info.Holder()); }; diff --git a/cc/tracking/Trackers/TrackerCSRT.h b/cc/tracking/Trackers/TrackerCSRT.h index 0e08268b..30e8a9de 100644 --- a/cc/tracking/Trackers/TrackerCSRT.h +++ b/cc/tracking/Trackers/TrackerCSRT.h @@ -7,18 +7,26 @@ 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 \ No newline at end of file +#endif diff --git a/cc/tracking/Trackers/TrackerGOTURN.cc b/cc/tracking/Trackers/TrackerGOTURN.cc index 28f70135..07a86d7a 100644 --- a/cc/tracking/Trackers/TrackerGOTURN.cc +++ b/cc/tracking/Trackers/TrackerGOTURN.cc @@ -8,12 +8,67 @@ Nan::Persistent TrackerGOTURN::constructor; +#if CV_VERSION_GREATER_EQUAL(4, 5, 2) + +NAN_METHOD(TrackerGOTURN::Clear) { +} + +NAN_METHOD(TrackerGOTURN::Init) { + FF::TryCatch tryCatch("TrackerGOTURN::Init"); + cv::Mat image; + cv::Rect2d boundingBox; + if ( + Mat::Converter::arg(0, &image, info) || + Rect::Converter::arg(1, &boundingBox, info) + ) { + return tryCatch.reThrow(); + } + + TrackerGOTURN::unwrapThis(info)->getTracker()->init(image, boundingBox); +} + +NAN_METHOD(TrackerGOTURN::Update) { + FF::TryCatch tryCatch("TrackerGOTURN::Update"); + cv::Mat image; + if (Mat::Converter::arg(0, &image, info)) { + return tryCatch.reThrow(); + } + + cv::Rect rect; + bool ret = false; + + try { + ret = TrackerGOTURN::unwrapThis(info)->getTracker()->update(image, rect); + } + catch (std::exception &e) { + return tryCatch.throwError(e.what()); + } + + if (ret) { + info.GetReturnValue().Set(Rect::Converter::wrap(rect)); + } else { + info.GetReturnValue().Set(Nan::Null()); + } +} + +NAN_METHOD(TrackerGOTURN::GetModel) { + // TBD +} + +#endif + NAN_MODULE_INIT(TrackerGOTURN::Init) { v8::Local ctor = Nan::New(TrackerGOTURN::New); v8::Local instanceTemplate = ctor->InstanceTemplate(); +#if CV_VERSION_GREATER_EQUAL(4, 5, 2) + Nan::SetPrototypeMethod(ctor, "clear", TrackerGOTURN::Clear); + Nan::SetPrototypeMethod(ctor, "init", TrackerGOTURN::Init); + Nan::SetPrototypeMethod(ctor, "update", TrackerGOTURN::Update); + Nan::SetPrototypeMethod(ctor, "getModel", TrackerGOTURN::GetModel); +#else Tracker::Init(ctor); - +#endif constructor.Reset(ctor); ctor->SetClassName(FF::newString("TrackerGOTURN")); instanceTemplate->SetInternalFieldCount(1); diff --git a/cc/tracking/Trackers/TrackerGOTURN.h b/cc/tracking/Trackers/TrackerGOTURN.h index 14ed10b8..22233b41 100644 --- a/cc/tracking/Trackers/TrackerGOTURN.h +++ b/cc/tracking/Trackers/TrackerGOTURN.h @@ -5,13 +5,22 @@ #ifndef __FF_TRACKERGOTURN_H__ #define __FF_TRACKERGOTURN_H__ +#if CV_VERSION_GREATER_EQUAL(4, 5, 2) +class TrackerGOTURN : public FF::ObjectWrapBase, public Nan::ObjectWrap { +#else class TrackerGOTURN : public Tracker { +#endif public: cv::Ptr tracker; static NAN_MODULE_INIT(Init); static NAN_METHOD(New); - +#if CV_VERSION_GREATER_EQUAL(4, 5, 2) + static NAN_METHOD(Clear); + static NAN_METHOD(Init); + static NAN_METHOD(Update); + static NAN_METHOD(GetModel); +#endif static Nan::Persistent constructor; cv::Ptr getTracker() { @@ -21,4 +30,4 @@ class TrackerGOTURN : public Tracker { #endif -#endif \ No newline at end of file +#endif diff --git a/cc/tracking/Trackers/TrackerKCF.cc b/cc/tracking/Trackers/TrackerKCF.cc index 137fbc86..cbb8d9fd 100644 --- a/cc/tracking/Trackers/TrackerKCF.cc +++ b/cc/tracking/Trackers/TrackerKCF.cc @@ -28,13 +28,19 @@ 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(3, 3, 0) +#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); diff --git a/cc/tracking/Trackers/TrackerKCF.h b/cc/tracking/Trackers/TrackerKCF.h index 04cc9692..bbf50152 100644 --- a/cc/tracking/Trackers/TrackerKCF.h +++ b/cc/tracking/Trackers/TrackerKCF.h @@ -7,18 +7,26 @@ 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 \ No newline at end of file +#endif diff --git a/cc/tracking/Trackers/TrackerMIL.cc b/cc/tracking/Trackers/TrackerMIL.cc index 4501f84d..f4cd6bce 100644 --- a/cc/tracking/Trackers/TrackerMIL.cc +++ b/cc/tracking/Trackers/TrackerMIL.cc @@ -26,13 +26,19 @@ 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(3, 3, 0) +#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); diff --git a/cc/tracking/Trackers/TrackerMIL.h b/cc/tracking/Trackers/TrackerMIL.h index 290c965f..ae8aa2c3 100644 --- a/cc/tracking/Trackers/TrackerMIL.h +++ b/cc/tracking/Trackers/TrackerMIL.h @@ -5,16 +5,24 @@ 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 \ No newline at end of file +#endif diff --git a/cc/tracking/Trackers/TrackerMOSSE.cc b/cc/tracking/Trackers/TrackerMOSSE.cc index d602f5ab..a42fbb5a 100644 --- a/cc/tracking/Trackers/TrackerMOSSE.cc +++ b/cc/tracking/Trackers/TrackerMOSSE.cc @@ -27,7 +27,11 @@ NAN_METHOD(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()); }; diff --git a/cc/tracking/Trackers/TrackerMOSSE.h b/cc/tracking/Trackers/TrackerMOSSE.h index 0c6c3327..d6faa9d6 100644 --- a/cc/tracking/Trackers/TrackerMOSSE.h +++ b/cc/tracking/Trackers/TrackerMOSSE.h @@ -7,18 +7,26 @@ 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 \ No newline at end of file +#endif diff --git a/cc/tracking/Trackers/TrackerMedianFlow.cc b/cc/tracking/Trackers/TrackerMedianFlow.cc index d62c6b4c..52b0e8f7 100644 --- a/cc/tracking/Trackers/TrackerMedianFlow.cc +++ b/cc/tracking/Trackers/TrackerMedianFlow.cc @@ -24,12 +24,18 @@ NAN_METHOD(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(3, 3, 0) +#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); diff --git a/cc/tracking/Trackers/TrackerMedianFlow.h b/cc/tracking/Trackers/TrackerMedianFlow.h index aa77aebe..78e9868f 100644 --- a/cc/tracking/Trackers/TrackerMedianFlow.h +++ b/cc/tracking/Trackers/TrackerMedianFlow.h @@ -5,16 +5,24 @@ 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 \ No newline at end of file +#endif diff --git a/cc/tracking/Trackers/TrackerTLD.cc b/cc/tracking/Trackers/TrackerTLD.cc index a6d1acbc..2d0306e7 100644 --- a/cc/tracking/Trackers/TrackerTLD.cc +++ b/cc/tracking/Trackers/TrackerTLD.cc @@ -25,7 +25,9 @@ NAN_METHOD(TrackerTLD::New) { FF_ASSERT_CONSTRUCT_CALL(); TrackerTLD* self = new TrackerTLD(); -#if CV_VERSION_GREATER_EQUAL(3, 3, 0) +#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(); diff --git a/cc/tracking/Trackers/TrackerTLD.h b/cc/tracking/Trackers/TrackerTLD.h index dda74637..2bf6be0f 100644 --- a/cc/tracking/Trackers/TrackerTLD.h +++ b/cc/tracking/Trackers/TrackerTLD.h @@ -5,16 +5,24 @@ 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 \ No newline at end of file +#endif From 3bcea9fe8b1de81a888f10216dce7e822be4c623 Mon Sep 17 00:00:00 2001 From: Wandenberg Date: Thu, 16 Dec 2021 00:51:23 +0100 Subject: [PATCH 3/3] adjust compile flags to support Node16 --- binding.gyp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/binding.gyp b/binding.gyp index 2eb83b57..6f2eda44 100644 --- a/binding.gyp +++ b/binding.gyp @@ -117,7 +117,7 @@ ], "cflags" : [ - "-std=c++11" + "-std=c++17" ], "cflags!" : [ "-fno-exceptions" @@ -131,7 +131,7 @@ ], "xcode_settings": { "OTHER_CFLAGS": [ - "-std=c++11", + "-std=c++17", "-stdlib=libc++" ], "GCC_ENABLE_CPP_EXCEPTIONS": "YES",