Skip to content

Commit 91bc118

Browse files
committed
add support to Opencv4.5.2
1 parent 0aac05f commit 91bc118

21 files changed

+228
-23
lines changed

cc/tracking/MultiTracker.cc

Lines changed: 27 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -36,7 +36,11 @@ NAN_METHOD(MultiTracker::New) {
3636
FF::TryCatch tryCatch("MultiTracker::New");
3737
FF_ASSERT_CONSTRUCT_CALL();
3838
MultiTracker* self = new MultiTracker();
39+
#if CV_VERSION_GREATER_EQUAL(4, 5, 2)
40+
self->setNativeObject(cv::makePtr<cv::legacy::MultiTracker>());
41+
#else
3942
self->setNativeObject(cv::makePtr<cv::MultiTracker>());
43+
#endif
4044
self->Wrap(info.Holder());
4145
info.GetReturnValue().Set(info.Holder());
4246
};
@@ -51,7 +55,9 @@ NAN_METHOD(MultiTracker::AddMIL) {
5155
) {
5256
return tryCatch.reThrow();
5357
}
54-
#if CV_VERSION_GREATER_EQUAL(3, 3, 0)
58+
#if CV_VERSION_GREATER_EQUAL(4, 5, 2)
59+
cv::Ptr<cv::legacy::Tracker> type = cv::legacy::TrackerMIL::create();
60+
#elif CV_VERSION_GREATER_EQUAL(3, 3, 0)
5561
cv::Ptr<cv::Tracker> type = cv::TrackerMIL::create();
5662
#else
5763
const std::string type("MIL");
@@ -70,7 +76,9 @@ NAN_METHOD(MultiTracker::AddBOOSTING) {
7076
) {
7177
return tryCatch.reThrow();
7278
}
73-
#if CV_VERSION_GREATER_EQUAL(3, 3, 0)
79+
#if CV_VERSION_GREATER_EQUAL(4, 5, 2)
80+
cv::Ptr<cv::legacy::Tracker> type = cv::legacy::TrackerBoosting::create();
81+
#elif CV_VERSION_GREATER_EQUAL(3, 3, 0)
7482
cv::Ptr<cv::Tracker> type = cv::TrackerBoosting::create();
7583
#else
7684
const std::string type("BOOSTING");
@@ -89,7 +97,9 @@ NAN_METHOD(MultiTracker::AddMEDIANFLOW) {
8997
) {
9098
return tryCatch.reThrow();
9199
}
92-
#if CV_VERSION_GREATER_EQUAL(3, 3, 0)
100+
#if CV_VERSION_GREATER_EQUAL(4, 5, 2)
101+
cv::Ptr<cv::legacy::Tracker> type = cv::legacy::TrackerMedianFlow::create();
102+
#elif CV_VERSION_GREATER_EQUAL(3, 3, 0)
93103
cv::Ptr<cv::Tracker> type = cv::TrackerMedianFlow::create();
94104
#else
95105
const std::string type("MEDIANFLOW");
@@ -108,7 +118,9 @@ NAN_METHOD(MultiTracker::AddTLD) {
108118
) {
109119
return tryCatch.reThrow();
110120
}
111-
#if CV_VERSION_GREATER_EQUAL(3, 3, 0)
121+
#if CV_VERSION_GREATER_EQUAL(4, 5, 2)
122+
cv::Ptr<cv::legacy::Tracker> type = cv::legacy::TrackerTLD::create();
123+
#elif CV_VERSION_GREATER_EQUAL(3, 3, 0)
112124
cv::Ptr<cv::Tracker> type = cv::TrackerTLD::create();
113125
#else
114126
const std::string type("TLD");
@@ -127,7 +139,9 @@ NAN_METHOD(MultiTracker::AddKCF) {
127139
) {
128140
return tryCatch.reThrow();
129141
}
130-
#if CV_VERSION_GREATER_EQUAL(3, 3, 0)
142+
#if CV_VERSION_GREATER_EQUAL(4, 5, 2)
143+
cv::Ptr<cv::legacy::Tracker> type = cv::legacy::TrackerKCF::create();
144+
#elif CV_VERSION_GREATER_EQUAL(3, 3, 0)
131145
cv::Ptr<cv::Tracker> type = cv::TrackerKCF::create();
132146
#else
133147
const std::string type("KCF");
@@ -159,7 +173,11 @@ NAN_METHOD(MultiTracker::AddMOSSE) {
159173
) {
160174
return tryCatch.reThrow();
161175
}
176+
#if CV_VERSION_GREATER_EQUAL(4, 5, 2)
177+
cv::Ptr<cv::legacy::Tracker> type = cv::legacy::TrackerMOSSE::create();
178+
#else
162179
cv::Ptr<cv::Tracker> type = cv::TrackerMOSSE::create();
180+
#endif
163181
bool ret = MultiTracker::unwrapSelf(info)->add(type, image, boundingBox);
164182
info.GetReturnValue().Set(Nan::New(ret));
165183
}
@@ -177,7 +195,11 @@ NAN_METHOD(MultiTracker::AddCSRT) {
177195
) {
178196
return tryCatch.reThrow();
179197
}
198+
#if CV_VERSION_GREATER_EQUAL(4, 5, 2)
199+
cv::Ptr<cv::legacy::Tracker> type = cv::legacy::TrackerCSRT::create();
200+
#else
180201
cv::Ptr<cv::Tracker> type = cv::TrackerCSRT::create();
202+
#endif
181203
bool ret = MultiTracker::unwrapSelf(info)->add(type, image, boundingBox);
182204
info.GetReturnValue().Set(Nan::New(ret));
183205
}

cc/tracking/MultiTracker.h

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,8 @@
11
#include "macros.h"
22
#include <opencv2/tracking.hpp>
3+
#if CV_VERSION_GREATER_EQUAL(4, 5, 2)
4+
#include <opencv2/tracking/tracking_legacy.hpp>
5+
#endif
36
#include "Mat.h"
47
#include "Rect.h"
58

@@ -8,7 +11,11 @@
811
#ifndef __FF_MULTITRACKER_H__
912
#define __FF_MULTITRACKER_H__
1013

14+
#if CV_VERSION_GREATER_EQUAL(4, 5, 2)
15+
class MultiTracker : public FF::ObjectWrap<MultiTracker, cv::Ptr<cv::legacy::MultiTracker>> {
16+
#else
1117
class MultiTracker : public FF::ObjectWrap<MultiTracker, cv::Ptr<cv::MultiTracker>> {
18+
#endif
1219
public:
1320
static Nan::Persistent<v8::FunctionTemplate> constructor;
1421

@@ -31,4 +38,4 @@ class MultiTracker : public FF::ObjectWrap<MultiTracker, cv::Ptr<cv::MultiTracke
3138

3239
#endif
3340

34-
#endif
41+
#endif

cc/tracking/Tracker.h

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,8 @@
11
#include "macros.h"
22
#include <opencv2/tracking.hpp>
3+
#if CV_VERSION_GREATER_EQUAL(4, 5, 2)
4+
#include <opencv2/tracking/tracking_legacy.hpp>
5+
#endif
36
#include "Mat.h"
47
#include "Rect.h"
58

@@ -8,7 +11,11 @@
811

912
class Tracker : public FF::ObjectWrapBase<Tracker>, public Nan::ObjectWrap {
1013
public:
14+
#if CV_VERSION_GREATER_EQUAL(4, 5, 2)
15+
virtual cv::Ptr<cv::legacy::Tracker> getTracker() = 0;
16+
#else
1117
virtual cv::Ptr<cv::Tracker> getTracker() = 0;
18+
#endif
1219

1320
static void Init(v8::Local<v8::FunctionTemplate>);
1421

@@ -18,4 +25,4 @@ class Tracker : public FF::ObjectWrapBase<Tracker>, public Nan::ObjectWrap {
1825
static NAN_METHOD(GetModel);
1926
};
2027

21-
#endif
28+
#endif

cc/tracking/Trackers/TrackerBoosting.cc

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -26,13 +26,19 @@ NAN_METHOD(TrackerBoosting::New) {
2626
FF::TryCatch tryCatch("TrackerBoosting::New");
2727
FF_ASSERT_CONSTRUCT_CALL();
2828

29+
#if CV_VERSION_GREATER_EQUAL(4, 5, 2)
30+
cv::legacy::TrackerBoosting::Params params;
31+
#else
2932
cv::TrackerBoosting::Params params;
33+
#endif
3034
if (TrackerBoostingParams::Converter::optArg(0, &params, info)) {
3135
return tryCatch.reThrow();
3236
}
3337

3438
TrackerBoosting* self = new TrackerBoosting();
35-
#if CV_VERSION_GREATER_EQUAL(3, 3, 0)
39+
#if CV_VERSION_GREATER_EQUAL(4, 5, 2)
40+
self->tracker = cv::legacy::TrackerBoosting::create(params);
41+
#elif CV_VERSION_GREATER_EQUAL(3, 3, 0)
3642
self->tracker = cv::TrackerBoosting::create(params);
3743
#else
3844
self->tracker = cv::TrackerBoosting::createTracker(params);

cc/tracking/Trackers/TrackerBoosting.h

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,16 +5,24 @@
55

66
class TrackerBoosting : public Tracker {
77
public:
8+
#if CV_VERSION_GREATER_EQUAL(4, 5, 2)
9+
cv::Ptr<cv::legacy::TrackerBoosting> tracker;
10+
#else
811
cv::Ptr<cv::TrackerBoosting> tracker;
12+
#endif
913

1014
static NAN_MODULE_INIT(Init);
1115
static NAN_METHOD(New);
1216

1317
static Nan::Persistent<v8::FunctionTemplate> constructor;
1418

19+
#if CV_VERSION_GREATER_EQUAL(4, 5, 2)
20+
cv::Ptr<cv::legacy::Tracker> getTracker() {
21+
#else
1522
cv::Ptr<cv::Tracker> getTracker() {
23+
#endif
1624
return tracker;
1725
}
1826
};
1927

20-
#endif
28+
#endif

cc/tracking/Trackers/TrackerBoostingParams.cc

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,11 @@ NAN_METHOD(TrackerBoostingParams::New) {
2828
FF::TryCatch tryCatch("TrackerBoostingParams::New");
2929
FF_ASSERT_CONSTRUCT_CALL();
3030
TrackerBoostingParams* self = new TrackerBoostingParams();
31+
#if CV_VERSION_GREATER_EQUAL(4, 5, 2)
32+
self->self = cv::legacy::TrackerBoosting::Params();
33+
#else
3134
self->self = cv::TrackerBoosting::Params();
35+
#endif
3236
self->Wrap(info.Holder());
3337
info.GetReturnValue().Set(info.Holder());
3438
};

cc/tracking/Trackers/TrackerBoostingParams.h

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,17 @@
11
#include "macros.h"
22
#include <opencv2/tracking.hpp>
3+
#if CV_VERSION_GREATER_EQUAL(4, 5, 2)
4+
#include <opencv2/tracking/tracking_legacy.hpp>
5+
#endif
36

47
#ifndef __FF_TRACKERBOOSTINGPARAMS_H__
58
#define __FF_TRACKERBOOSTINGPARAMS_H__
69

10+
#if CV_VERSION_GREATER_EQUAL(4, 5, 2)
11+
class TrackerBoostingParams : public FF::ObjectWrap<TrackerBoostingParams, cv::legacy::TrackerBoosting::Params> {
12+
#else
713
class TrackerBoostingParams : public FF::ObjectWrap<TrackerBoostingParams, cv::TrackerBoosting::Params> {
14+
#endif
815
public:
916
static Nan::Persistent<v8::FunctionTemplate> constructor;
1017

@@ -22,4 +29,4 @@ class TrackerBoostingParams : public FF::ObjectWrap<TrackerBoostingParams, cv::T
2229
FF_ACCESSORS(featureSetNumFeatures, FF::IntConverter);
2330
};
2431

25-
#endif
32+
#endif

cc/tracking/Trackers/TrackerCSRT.cc

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -28,13 +28,21 @@ NAN_METHOD(TrackerCSRT::New) {
2828
FF::TryCatch tryCatch("TrackerCSRT::New");
2929
FF_ASSERT_CONSTRUCT_CALL();
3030

31+
#if CV_VERSION_GREATER_EQUAL(4, 5, 2)
32+
cv::legacy::TrackerCSRT::Params params;
33+
#else
3134
cv::TrackerCSRT::Params params;
35+
#endif
3236
if (TrackerCSRTParams::Converter::optArg(0, &params, info)) {
3337
return tryCatch.reThrow();
3438
}
3539

3640
TrackerCSRT* self = new TrackerCSRT();
41+
#if CV_VERSION_GREATER_EQUAL(4, 5, 2)
42+
self->tracker = cv::legacy::TrackerCSRT::create(params);
43+
#else
3744
self->tracker = cv::TrackerCSRT::create(params);
45+
#endif
3846
self->Wrap(info.Holder());
3947
info.GetReturnValue().Set(info.Holder());
4048
};

cc/tracking/Trackers/TrackerCSRT.h

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,18 +7,26 @@
77

88
class TrackerCSRT : public Tracker {
99
public:
10+
#if CV_VERSION_GREATER_EQUAL(4, 5, 2)
11+
cv::Ptr<cv::legacy::TrackerCSRT> tracker;
12+
#else
1013
cv::Ptr<cv::TrackerCSRT> tracker;
14+
#endif
1115

1216
static NAN_MODULE_INIT(Init);
1317
static NAN_METHOD(New);
1418

1519
static Nan::Persistent<v8::FunctionTemplate> constructor;
1620

21+
#if CV_VERSION_GREATER_EQUAL(4, 5, 2)
22+
cv::Ptr<cv::legacy::Tracker> getTracker() {
23+
#else
1724
cv::Ptr<cv::Tracker> getTracker() {
25+
#endif
1826
return tracker;
1927
}
2028
};
2129

2230
#endif
2331

24-
#endif
32+
#endif

cc/tracking/Trackers/TrackerGOTURN.cc

Lines changed: 56 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,12 +8,67 @@
88

99
Nan::Persistent<v8::FunctionTemplate> TrackerGOTURN::constructor;
1010

11+
#if CV_VERSION_GREATER_EQUAL(4, 5, 2)
12+
13+
NAN_METHOD(TrackerGOTURN::Clear) {
14+
}
15+
16+
NAN_METHOD(TrackerGOTURN::Init) {
17+
FF::TryCatch tryCatch("TrackerGOTURN::Init");
18+
cv::Mat image;
19+
cv::Rect2d boundingBox;
20+
if (
21+
Mat::Converter::arg(0, &image, info) ||
22+
Rect::Converter::arg(1, &boundingBox, info)
23+
) {
24+
return tryCatch.reThrow();
25+
}
26+
27+
TrackerGOTURN::unwrapThis(info)->getTracker()->init(image, boundingBox);
28+
}
29+
30+
NAN_METHOD(TrackerGOTURN::Update) {
31+
FF::TryCatch tryCatch("TrackerGOTURN::Update");
32+
cv::Mat image;
33+
if (Mat::Converter::arg(0, &image, info)) {
34+
return tryCatch.reThrow();
35+
}
36+
37+
cv::Rect rect;
38+
bool ret = false;
39+
40+
try {
41+
ret = TrackerGOTURN::unwrapThis(info)->getTracker()->update(image, rect);
42+
}
43+
catch (std::exception &e) {
44+
return tryCatch.throwError(e.what());
45+
}
46+
47+
if (ret) {
48+
info.GetReturnValue().Set(Rect::Converter::wrap(rect));
49+
} else {
50+
info.GetReturnValue().Set(Nan::Null());
51+
}
52+
}
53+
54+
NAN_METHOD(TrackerGOTURN::GetModel) {
55+
// TBD
56+
}
57+
58+
#endif
59+
1160
NAN_MODULE_INIT(TrackerGOTURN::Init) {
1261
v8::Local<v8::FunctionTemplate> ctor = Nan::New<v8::FunctionTemplate>(TrackerGOTURN::New);
1362
v8::Local<v8::ObjectTemplate> instanceTemplate = ctor->InstanceTemplate();
1463

64+
#if CV_VERSION_GREATER_EQUAL(4, 5, 2)
65+
Nan::SetPrototypeMethod(ctor, "clear", TrackerGOTURN::Clear);
66+
Nan::SetPrototypeMethod(ctor, "init", TrackerGOTURN::Init);
67+
Nan::SetPrototypeMethod(ctor, "update", TrackerGOTURN::Update);
68+
Nan::SetPrototypeMethod(ctor, "getModel", TrackerGOTURN::GetModel);
69+
#else
1570
Tracker::Init(ctor);
16-
71+
#endif
1772
constructor.Reset(ctor);
1873
ctor->SetClassName(FF::newString("TrackerGOTURN"));
1974
instanceTemplate->SetInternalFieldCount(1);

0 commit comments

Comments
 (0)