Skip to content
This repository was archived by the owner on Oct 18, 2023. It is now read-only.
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.

Commit 8c401a0

Browse files
author
Simon Hofmann
committedMay 10, 2019
Updated from upstream
2 parents f24956e + 4a57f1d commit 8c401a0

30 files changed

+674
-203
lines changed
 

‎.travis.yml

Lines changed: 87 additions & 66 deletions
Original file line numberDiff line numberDiff line change
@@ -18,86 +18,107 @@ node_js:
1818
env:
1919
global:
2020
- OPENCV4NODEJS_DISABLE_AUTOBUILD=1
21-
matrix:
22-
# - BUILD_TASK=test
23-
# TAG=3.0.0-contrib
24-
# - BUILD_TASK=test
25-
# TAG=3.1.0-contrib
26-
# - BUILD_TASK=test
27-
# TAG=3.2.0-contrib
28-
# - BUILD_TASK=test
29-
# TAG=3.3.0-contrib
30-
# - BUILD_TASK=test
31-
# TAG=3.4.0-contrib-world
32-
# - BUILD_TASK=test
33-
# TAG=3.4.1-contrib
34-
# - BUILD_TASK=test
35-
# TAG=3.4.2-contrib
36-
# - BUILD_TASK=test
37-
# TAG=3.4.3
38-
- BUILD_TASK=test
39-
TAG=3.4.3-contrib
40-
- BUILD_TASK=prebuild
41-
TAG=3.4.3-contrib
42-
# - BUILD_TASK=cover
43-
# TAG=3.4.3-contrib
4421

4522
matrix:
4623
include:
47-
# - os: osx
48-
# node_js: '6'
49-
# env:
50-
# - BUILD_TASK=test
51-
# - os: osx
52-
# node_js: '6'
53-
# env:
54-
# - BUILD_TASK=prebuild
55-
# - os: osx
56-
# node_js: '7'
57-
# env:
58-
# - BUILD_TASK=test
59-
# - os: osx
60-
# node_js: '7'
61-
# env:
62-
# - BUILD_TASK=prebuild
63-
# - os: osx
64-
# node_js: '8'
65-
# env:
66-
# - BUILD_TASK=test
67-
# - os: osx
68-
# node_js: '8'
69-
# env:
70-
# - BUILD_TASK=prebuild
71-
# - os: osx
72-
# node_js: '9'
73-
# env:
74-
# - BUILD_TASK=test
75-
# - os: osx
76-
# node_js: '9'
77-
# env:
78-
# - BUILD_TASK=prebuild
79-
# - os: osx
80-
# node_js: '10'
81-
# env:
82-
# - BUILD_TASK=test
83-
# - os: osx
84-
# node_js: '10'
85-
# env:
86-
# - BUILD_TASK=prebuild
87-
- os: osx
24+
- os: linux
25+
env:
26+
- BUILD_TASK=test
27+
TAG=3.0.0-contrib-node6
28+
- os: linux
29+
env:
30+
- BUILD_TASK=test
31+
TAG=3.1.0-contrib-node6
32+
- os: linux
33+
env:
34+
- BUILD_TASK=test
35+
TAG=3.2.0-contrib-node6
36+
- os: linux
37+
env:
38+
- BUILD_TASK=test
39+
TAG=3.3.0-contrib-node6
40+
- os: linux
41+
env:
42+
- BUILD_TASK=test
43+
TAG=3.4.0-contrib-world-node6
44+
- os: linux
45+
env:
46+
- BUILD_TASK=test
47+
TAG=3.4.6-node6
48+
- os: linux
49+
env:
50+
- BUILD_TASK=test
51+
TAG=3.4.6-contrib-node6
52+
- os: linux
53+
env:
54+
- BUILD_TASK=test
55+
TAG=3.4.6-contrib-node8
56+
- os: linux
57+
env:
58+
- BUILD_TASK=test
59+
TAG=3.4.6-contrib-node10
60+
- os: linux
61+
env:
62+
- BUILD_TASK=cover
63+
TAG=3.4.6-contrib-node11
64+
- os: linux
65+
node_js: '6'
66+
env:
67+
- BUILD_TASK=prebuild
68+
- os: linux
69+
node_js: '8'
70+
env:
71+
- BUILD_TASK=prebuild
72+
- os: linux
73+
node_js: '10'
74+
env:
75+
- BUILD_TASK=prebuild
76+
- os: linux
77+
node_js: '11'
78+
env:
79+
- BUILD_TASK=prebuild
80+
- os: linux
8881
node_js: 'node'
82+
env:
83+
- BUILD_TASK=prebuild
84+
- os: osx
85+
node_js: '6'
8986
env:
9087
- BUILD_TASK=test
9188
- os: osx
92-
node_js: 'node'
89+
node_js: '6'
90+
env:
91+
- BUILD_TASK=prebuild
92+
- os: osx
93+
node_js: '8'
94+
env:
95+
- BUILD_TASK=test
96+
- os: osx
97+
node_js: '8'
98+
env:
99+
- BUILD_TASK=prebuild
100+
- os: osx
101+
node_js: '10'
102+
env:
103+
- BUILD_TASK=test
104+
- os: osx
105+
node_js: '10'
106+
env:
107+
- BUILD_TASK=prebuild
108+
- os: osx
109+
node_js: '11'
110+
env:
111+
- BUILD_TASK=test
112+
- os: osx
113+
node_js: '11'
93114
env:
94115
- BUILD_TASK=prebuild
95116

96117
before_install:
97118
- chmod +x ./ci/$BUILD_TASK/$BUILD_TASK.sh;
98119

99120
install:
100-
- if [[ "$TRAVIS_OS_NAME" == "linux" ]]; then travis_wait 30 docker pull justadudewhohacks/opencv4nodejs-ci:$TAG; fi
121+
- if [[ "$TRAVIS_OS_NAME" == "linux" && $TAG != "" ]]; then travis_wait 30 docker pull justadudewhohacks/opencv4nodejs-ci:$TAG; fi
101122
- if [[ "$TRAVIS_OS_NAME" == "osx" ]]; then brew update; brew install opencv@3; brew link --force opencv@3; fi
102123

103124
script:

‎appveyor.yml

Lines changed: 4 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -22,43 +22,29 @@ environment:
2222
- nodejs_version: 11
2323
PYTHON: "C:\\Python27-x64"
2424
PYTHON_VERSION: "2.7"
25-
opencv_version: 3.4.3
25+
opencv_version: 3.4.6
2626
# use self build
2727
OPENCV4NODEJS_DISABLE_AUTOBUILD: 1
2828
# node 10
2929
- nodejs_version: 10
3030
PYTHON: "C:\\Python27-x64"
3131
PYTHON_VERSION: "2.7"
32-
opencv_version: 3.4.3
33-
# use self build
34-
OPENCV4NODEJS_DISABLE_AUTOBUILD: 1
35-
# node 9
36-
- nodejs_version: 9
37-
PYTHON: "C:\\Python27-x64"
38-
PYTHON_VERSION: "2.7"
39-
opencv_version: 3.4.3
32+
opencv_version: 3.4.6
4033
# use self build
4134
OPENCV4NODEJS_DISABLE_AUTOBUILD: 1
4235
# node 8
4336
- nodejs_version: 8
4437
PYTHON: "C:\\Python27-x64"
4538
PYTHON_VERSION: "2.7"
46-
opencv_version: 3.4.3
39+
opencv_version: 3.4.6
4740
# use self build
4841
OPENCV4NODEJS_DISABLE_AUTOBUILD: 1
4942
DISABLE_ASYNC_HOOKS_TEST: 1
50-
# node 7
51-
- nodejs_version: 7
52-
PYTHON: "C:\\Python27-x64"
53-
PYTHON_VERSION: "2.7"
54-
opencv_version: 3.4.3
55-
# use self build
56-
OPENCV4NODEJS_DISABLE_AUTOBUILD: 1
5743
# node 6
5844
- nodejs_version: 6
5945
PYTHON: "C:\\Python27-x64"
6046
PYTHON_VERSION: "2.7"
61-
opencv_version: 3.4.3
47+
opencv_version: 3.4.6
6248
# use self build
6349
OPENCV4NODEJS_DISABLE_AUTOBUILD: 1
6450

‎binding.gyp

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -88,6 +88,9 @@
8888
"cc/modules/tracking/Trackers/TrackerMedianFlow.cc",
8989
"cc/modules/tracking/Trackers/TrackerTLD.cc",
9090
"cc/modules/tracking/Trackers/TrackerGOTURN.cc",
91+
"cc/modules/tracking/Trackers/TrackerCSRT.cc",
92+
"cc/modules/tracking/Trackers/TrackerCSRTParams.cc",
93+
"cc/modules/tracking/Trackers/TrackerMOSSE.cc",
9194
"cc/modules/features2d/features2d.cc",
9295
"cc/modules/features2d/KeyPoint.cc",
9396
"cc/modules/features2d/KeyPointMatch.cc",

‎cc/macros.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -111,6 +111,7 @@ static FF_FUNC_TYPE ff_func = FF_FUNC_TYPE();
111111
#define FF_SETTER_UINT(clazz, name, prop) FF_SETTER(clazz, name, prop, ff_uint)
112112
#define FF_SETTER_NUMBER(clazz, name, prop) FF_SETTER(clazz, name, prop, ff_number)
113113
#define FF_SETTER_BOOL(clazz, name, prop) FF_SETTER(clazz, name, prop, ff_bool)
114+
#define FF_SETTER_STRING(clazz, name, prop) FF_SETTER(clazz, name, prop, ff_string)
114115

115116
#define FF_SETTER_SIMPLE(clazz, name, prop, converter) \
116117
NAN_SETTER(name##Set) { \

‎cc/modules/objdetect/HOGDescriptor.cc

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -85,7 +85,7 @@ NAN_METHOD(HOGDescriptor::New) {
8585
}
8686

8787
HOGDescriptor* self = new HOGDescriptor();
88-
self->hog = cv::HOGDescriptor(
88+
self->hog = std::make_shared<cv::HOGDescriptor>(
8989
winSize,
9090
blockSize,
9191
blockStride,
@@ -115,7 +115,7 @@ NAN_METHOD(HOGDescriptor::GetDefaultPeopleDetector) {
115115
}
116116

117117
NAN_METHOD(HOGDescriptor::CheckDetectorSize) {
118-
FF_RETURN(Nan::New(HOGDescriptor::Converter::unwrap(info.This()).checkDetectorSize()));
118+
FF_RETURN(Nan::New(HOGDescriptor::Converter::unwrap(info.This())->checkDetectorSize()));
119119
}
120120

121121
NAN_METHOD(HOGDescriptor::SetSVMDetector) {
@@ -124,19 +124,19 @@ NAN_METHOD(HOGDescriptor::SetSVMDetector) {
124124
if (!FF_HAS_ARG(0) || FloatArrayConverter::unwrap(&detector, info[0])) {
125125
FF_THROW("expected detector to be an Array of type Number");
126126
}
127-
HOGDescriptor::Converter::unwrapPtr(info.This())->setSVMDetector(detector);
127+
HOGDescriptor::Converter::unwrap(info.This())->setSVMDetector(detector);
128128
}
129129

130130
NAN_METHOD(HOGDescriptor::Save) {
131131
FF_METHOD_CONTEXT("HOGDescriptor::Save");
132132
FF_ARG_STRING(0, std::string path);
133-
FF_UNWRAP(info.This(), HOGDescriptor)->hog.save(path);
133+
FF_UNWRAP(info.This(), HOGDescriptor)->hog->save(path);
134134
}
135135

136136
NAN_METHOD(HOGDescriptor::Load) {
137137
FF_METHOD_CONTEXT("HOGDescriptor::Load");
138138
FF_ARG_STRING(0, std::string path);
139-
FF_UNWRAP(info.This(), HOGDescriptor)->hog.load(path);
139+
FF_UNWRAP(info.This(), HOGDescriptor)->hog->load(path);
140140
}
141141

142142
NAN_METHOD(HOGDescriptor::Compute) {

‎cc/modules/objdetect/HOGDescriptor.h

Lines changed: 16 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -13,31 +13,31 @@
1313

1414
class HOGDescriptor : public Nan::ObjectWrap {
1515
public:
16-
cv::HOGDescriptor hog;
16+
std::shared_ptr<cv::HOGDescriptor> hog;
1717

1818
static Nan::Persistent<v8::FunctionTemplate> constructor;
1919

20-
cv::HOGDescriptor* getNativeObjectPtr() { return &hog; }
21-
cv::HOGDescriptor getNativeObject() { return hog; }
20+
cv::HOGDescriptor* getNativeObjectPtr() { return hog.get(); }
21+
std::shared_ptr<cv::HOGDescriptor> getNativeObject() { return hog; }
2222

23-
typedef InstanceConverter<HOGDescriptor, cv::HOGDescriptor> Converter;
23+
typedef InstanceConverter<HOGDescriptor, std::shared_ptr<cv::HOGDescriptor>> Converter;
2424

2525
static const char* getClassName() {
2626
return "HOGDescriptor";
2727
}
2828

29-
static FF_GETTER_JSOBJ(HOGDescriptor, winSize, hog.winSize, FF_UNWRAP_SIZE_AND_GET, Size::constructor);
30-
static FF_GETTER_JSOBJ(HOGDescriptor, blockSize, hog.blockSize, FF_UNWRAP_SIZE_AND_GET, Size::constructor);
31-
static FF_GETTER_JSOBJ(HOGDescriptor, blockStride, hog.blockStride, FF_UNWRAP_SIZE_AND_GET, Size::constructor);
32-
static FF_GETTER_JSOBJ(HOGDescriptor, cellSize, hog.cellSize, FF_UNWRAP_SIZE_AND_GET, Size::constructor);
33-
static FF_GETTER(HOGDescriptor, nbins, hog.nbins);
34-
static FF_GETTER(HOGDescriptor, derivAperture, hog.derivAperture);
35-
static FF_GETTER(HOGDescriptor, histogramNormType, hog.histogramNormType);
36-
static FF_GETTER(HOGDescriptor, nlevels, hog.nlevels);
37-
static FF_GETTER(HOGDescriptor, winSigma, hog.winSigma);
38-
static FF_GETTER(HOGDescriptor, L2HysThreshold, hog.L2HysThreshold);
39-
static FF_GETTER(HOGDescriptor, gammaCorrection, hog.gammaCorrection);
40-
static FF_GETTER(HOGDescriptor, signedGradient, hog.signedGradient);
29+
static FF_GETTER_JSOBJ(HOGDescriptor, winSize, hog->winSize, FF_UNWRAP_SIZE_AND_GET, Size::constructor);
30+
static FF_GETTER_JSOBJ(HOGDescriptor, blockSize, hog->blockSize, FF_UNWRAP_SIZE_AND_GET, Size::constructor);
31+
static FF_GETTER_JSOBJ(HOGDescriptor, blockStride, hog->blockStride, FF_UNWRAP_SIZE_AND_GET, Size::constructor);
32+
static FF_GETTER_JSOBJ(HOGDescriptor, cellSize, hog->cellSize, FF_UNWRAP_SIZE_AND_GET, Size::constructor);
33+
static FF_GETTER(HOGDescriptor, nbins, hog->nbins);
34+
static FF_GETTER(HOGDescriptor, derivAperture, hog->derivAperture);
35+
static FF_GETTER(HOGDescriptor, histogramNormType, hog->histogramNormType);
36+
static FF_GETTER(HOGDescriptor, nlevels, hog->nlevels);
37+
static FF_GETTER(HOGDescriptor, winSigma, hog->winSigma);
38+
static FF_GETTER(HOGDescriptor, L2HysThreshold, hog->L2HysThreshold);
39+
static FF_GETTER(HOGDescriptor, gammaCorrection, hog->gammaCorrection);
40+
static FF_GETTER(HOGDescriptor, signedGradient, hog->signedGradient);
4141

4242
static NAN_MODULE_INIT(Init);
4343

‎cc/modules/objdetect/HOGDescriptorBindings.h

Lines changed: 84 additions & 83 deletions
Large diffs are not rendered by default.

‎cc/modules/tracking/MultiTracker.cc

Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,12 @@ NAN_MODULE_INIT(MultiTracker::Init) {
1919
Nan::SetPrototypeMethod(ctor, "addMEDIANFLOW", MultiTracker::AddMEDIANFLOW);
2020
Nan::SetPrototypeMethod(ctor, "addTLD", MultiTracker::AddTLD);
2121
Nan::SetPrototypeMethod(ctor, "addKCF", MultiTracker::AddKCF);
22+
#if CV_MINOR_VERSION > 3
23+
Nan::SetPrototypeMethod(ctor, "addMOSSE", MultiTracker::AddTLD);
24+
#endif
25+
#if CV_MINOR_VERSION > 4 || (CV_MINOR_VERSION == 4 && CV_SUBMINOR_VERSION > 0)
26+
Nan::SetPrototypeMethod(ctor, "addCSRT", MultiTracker::AddKCF);
27+
#endif
2228
Nan::SetPrototypeMethod(ctor, "update", MultiTracker::Update);
2329

2430
target->Set(FF_NEW_STRING("MultiTracker"), ctor->GetFunction());
@@ -114,6 +120,29 @@ NAN_METHOD(MultiTracker::Update) {
114120
}
115121
FF_RETURN(jsRects);
116122
}
123+
#if CV_MINOR_VERSION > 3
124+
125+
NAN_METHOD(MultiTracker::AddMOSSE) {
126+
FF_METHOD_CONTEXT("MultiTracker::AddMOSSE");
127+
FF_ARG_INSTANCE(0, cv::Mat image, Mat::constructor, FF_UNWRAP_MAT_AND_GET);
128+
FF_ARG_INSTANCE(1, cv::Rect2d boundingBox, Rect::constructor, FF_UNWRAP_RECT_AND_GET);
129+
cv::Ptr<cv::Tracker> type = cv::TrackerMOSSE::create();
130+
bool ret = FF_UNWRAP(info.This(), MultiTracker)->tracker.add(type, image, boundingBox);
131+
FF_RETURN(Nan::New(ret));
132+
}
133+
134+
#endif
135+
#if CV_MINOR_VERSION > 4 || (CV_MINOR_VERSION == 4 && CV_SUBMINOR_VERSION > 0)
136+
137+
NAN_METHOD(MultiTracker::AddCSRT) {
138+
FF_METHOD_CONTEXT("MultiTracker::AddCSRT");
139+
FF_ARG_INSTANCE(0, cv::Mat image, Mat::constructor, FF_UNWRAP_MAT_AND_GET);
140+
FF_ARG_INSTANCE(1, cv::Rect2d boundingBox, Rect::constructor, FF_UNWRAP_RECT_AND_GET);
141+
cv::Ptr<cv::Tracker> type = cv::TrackerCSRT::create();
142+
bool ret = FF_UNWRAP(info.This(), MultiTracker)->tracker.add(type, image, boundingBox);
143+
FF_RETURN(Nan::New(ret));
144+
}
145+
#endif
117146

118147
#endif
119148

‎cc/modules/tracking/MultiTracker.h

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,8 @@ class MultiTracker : public Nan::ObjectWrap {
2020
static NAN_METHOD(AddMEDIANFLOW);
2121
static NAN_METHOD(AddTLD);
2222
static NAN_METHOD(AddKCF);
23+
static NAN_METHOD(AddMOSSE);
24+
static NAN_METHOD(AddCSRT);
2325
static NAN_METHOD(Update);
2426

2527
static Nan::Persistent<v8::FunctionTemplate> constructor;
Lines changed: 45 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,45 @@
1+
#ifdef HAVE_TRACKING
2+
3+
#include "TrackerCSRT.h"
4+
#include "TrackerCSRTParams.h"
5+
6+
#if CV_MINOR_VERSION > 4 || (CV_MINOR_VERSION == 4 && CV_SUBMINOR_VERSION > 0)
7+
8+
Nan::Persistent<v8::FunctionTemplate> TrackerCSRT::constructor;
9+
10+
NAN_MODULE_INIT(TrackerCSRT::Init) {
11+
v8::Local<v8::FunctionTemplate> ctor = Nan::New<v8::FunctionTemplate>(TrackerCSRT::New);
12+
v8::Local<v8::ObjectTemplate> instanceTemplate = ctor->InstanceTemplate();
13+
14+
Tracker::Init(ctor);
15+
TrackerCSRTParams::Init(target);
16+
17+
constructor.Reset(ctor);
18+
ctor->SetClassName(FF_NEW_STRING("TrackerCSRT"));
19+
instanceTemplate->SetInternalFieldCount(1);
20+
21+
target->Set(FF_NEW_STRING("TrackerCSRT"), ctor->GetFunction());
22+
};
23+
24+
25+
NAN_METHOD(TrackerCSRT::New) {
26+
FF_ASSERT_CONSTRUCT_CALL(TrackerCSRT);
27+
FF_METHOD_CONTEXT("TrackerCSRT::New");
28+
29+
FF_ARG_INSTANCE_IFDEF(
30+
0,
31+
cv::TrackerCSRT::Params params,
32+
TrackerCSRTParams::constructor,
33+
FF_UNWRAP_TRACKERCSRTPARAMS_AND_GET,
34+
cv::TrackerCSRT::Params()
35+
);
36+
37+
TrackerCSRT* self = new TrackerCSRT();
38+
self->tracker = cv::TrackerCSRT::create(params);
39+
self->Wrap(info.Holder());
40+
FF_RETURN(info.Holder());
41+
};
42+
43+
#endif
44+
45+
#endif
Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
#include "../Tracker.h"
2+
3+
#if CV_MINOR_VERSION > 4 || (CV_MINOR_VERSION == 4 && CV_SUBMINOR_VERSION > 0)
4+
5+
#ifndef __FF_TRACKERCSRT_H__
6+
#define __FF_TRACKERCSRT_H__
7+
8+
class TrackerCSRT : public Tracker {
9+
public:
10+
cv::Ptr<cv::TrackerCSRT> tracker;
11+
12+
static NAN_MODULE_INIT(Init);
13+
static NAN_METHOD(New);
14+
15+
static Nan::Persistent<v8::FunctionTemplate> constructor;
16+
17+
cv::Ptr<cv::Tracker> getTracker() {
18+
return tracker;
19+
}
20+
};
21+
22+
#endif
23+
24+
#endif
Lines changed: 61 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,61 @@
1+
#ifdef HAVE_TRACKING
2+
3+
#include "TrackerCSRTParams.h"
4+
5+
#if CV_MINOR_VERSION > 4 || (CV_MINOR_VERSION == 4 && CV_SUBMINOR_VERSION > 0)
6+
7+
Nan::Persistent<v8::FunctionTemplate> TrackerCSRTParams::constructor;
8+
9+
NAN_MODULE_INIT(TrackerCSRTParams::Init) {
10+
v8::Local<v8::FunctionTemplate> ctor = Nan::New<v8::FunctionTemplate>(TrackerCSRTParams::New);
11+
v8::Local<v8::ObjectTemplate> instanceTemplate = ctor->InstanceTemplate();
12+
13+
constructor.Reset(ctor);
14+
ctor->SetClassName(FF_NEW_STRING("TrackerCSRTParams"));
15+
instanceTemplate->SetInternalFieldCount(1);
16+
17+
Nan::SetAccessor(instanceTemplate, FF_NEW_STRING("admm_iterations"), admm_iterationsGet, admm_iterationsSet);
18+
Nan::SetAccessor(instanceTemplate, FF_NEW_STRING("background_ratio"), background_ratioGet, background_ratioSet);
19+
Nan::SetAccessor(instanceTemplate, FF_NEW_STRING("cheb_attenuation"), cheb_attenuationGet, cheb_attenuationSet);
20+
Nan::SetAccessor(instanceTemplate, FF_NEW_STRING("filter_lr"), filter_lrGet, filter_lrSet);
21+
Nan::SetAccessor(instanceTemplate, FF_NEW_STRING("gsl_sigma"), gsl_sigmaGet, gsl_sigmaSet);
22+
Nan::SetAccessor(instanceTemplate, FF_NEW_STRING("histogram_bins"), histogram_binsGet, histogram_binsSet);
23+
Nan::SetAccessor(instanceTemplate, FF_NEW_STRING("histogram_lr"), histogram_lrGet, histogram_lrSet);
24+
Nan::SetAccessor(instanceTemplate, FF_NEW_STRING("hog_clip"), hog_clipGet, hog_clipSet);
25+
Nan::SetAccessor(instanceTemplate, FF_NEW_STRING("hog_orientations"), hog_orientationsGet, hog_orientationsSet);
26+
Nan::SetAccessor(instanceTemplate, FF_NEW_STRING("kaiser_alpha"), kaiser_alphaGet, kaiser_alphaSet);
27+
Nan::SetAccessor(instanceTemplate, FF_NEW_STRING("num_hog_channels_used"), num_hog_channels_usedGet, num_hog_channels_usedSet);
28+
Nan::SetAccessor(instanceTemplate, FF_NEW_STRING("number_of_scales"), number_of_scalesGet, number_of_scalesSet);
29+
Nan::SetAccessor(instanceTemplate, FF_NEW_STRING("padding"), paddingGet, paddingSet);
30+
#if CV_MINOR_VERSION > 4 || (CV_MINOR_VERSION == 4 && CV_SUBMINOR_VERSION > 3)
31+
Nan::SetAccessor(instanceTemplate, FF_NEW_STRING("psr_threshold"), psr_thresholdGet, psr_thresholdSet);
32+
#endif
33+
Nan::SetAccessor(instanceTemplate, FF_NEW_STRING("scale_lr"), scale_lrGet, scale_lrSet);
34+
Nan::SetAccessor(instanceTemplate, FF_NEW_STRING("scale_model_max_area"), scale_model_max_areaGet, scale_model_max_areaSet);
35+
Nan::SetAccessor(instanceTemplate, FF_NEW_STRING("scale_sigma_factor"), scale_sigma_factorGet, scale_sigma_factorSet);
36+
Nan::SetAccessor(instanceTemplate, FF_NEW_STRING("scale_step"), scale_stepGet, scale_stepSet);
37+
Nan::SetAccessor(instanceTemplate, FF_NEW_STRING("template_size"), template_sizeGet, template_sizeSet);
38+
Nan::SetAccessor(instanceTemplate, FF_NEW_STRING("use_channel_weights"), use_channel_weightsGet, use_channel_weightsSet);
39+
Nan::SetAccessor(instanceTemplate, FF_NEW_STRING("use_color_names"), use_color_namesGet, use_color_namesSet);
40+
Nan::SetAccessor(instanceTemplate, FF_NEW_STRING("use_gray"), use_grayGet, use_graySet);
41+
Nan::SetAccessor(instanceTemplate, FF_NEW_STRING("use_hog"), use_hogGet, use_hogSet);
42+
Nan::SetAccessor(instanceTemplate, FF_NEW_STRING("use_rgb"), use_rgbGet, use_rgbSet);
43+
Nan::SetAccessor(instanceTemplate, FF_NEW_STRING("use_segmentation"), use_segmentationGet, use_segmentationSet);
44+
Nan::SetAccessor(instanceTemplate, FF_NEW_STRING("weights_lr"), weights_lrGet, weights_lrSet);
45+
Nan::SetAccessor(instanceTemplate, FF_NEW_STRING("window_function"), window_functionGet, window_functionSet);
46+
47+
target->Set(FF_NEW_STRING("TrackerCSRTParams"), ctor->GetFunction());
48+
};
49+
50+
NAN_METHOD(TrackerCSRTParams::New) {
51+
FF_ASSERT_CONSTRUCT_CALL(TrackerCSRTParams);
52+
FF_METHOD_CONTEXT("TrackerCSRTParams::New");
53+
TrackerCSRTParams* self = new TrackerCSRTParams();
54+
self->params = cv::TrackerCSRT::Params();
55+
self->Wrap(info.Holder());
56+
FF_RETURN(info.Holder());
57+
};
58+
59+
#endif
60+
61+
#endif
Lines changed: 83 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,83 @@
1+
#include "macros.h"
2+
#include <opencv2/tracking.hpp>
3+
4+
#if CV_MINOR_VERSION > 4 || (CV_MINOR_VERSION == 4 && CV_SUBMINOR_VERSION > 0)
5+
6+
#ifndef __FF_TRACKERCSRTPARAMS_H__
7+
#define __FF_TRACKERCSRTPARAMS_H__
8+
9+
class TrackerCSRTParams : public Nan::ObjectWrap {
10+
public:
11+
cv::TrackerCSRT::Params params;
12+
13+
static NAN_MODULE_INIT(Init);
14+
static NAN_METHOD(New);
15+
16+
static FF_GETTER(TrackerCSRTParams, admm_iterationsGet, params.admm_iterations);
17+
static FF_SETTER_INT(TrackerCSRTParams, admm_iterations, params.admm_iterations);
18+
static FF_GETTER(TrackerCSRTParams, background_ratioGet, params.background_ratio);
19+
static FF_SETTER_INT(TrackerCSRTParams, background_ratio, params.background_ratio);
20+
static FF_GETTER(TrackerCSRTParams, cheb_attenuationGet, params.cheb_attenuation);
21+
static FF_SETTER_NUMBER(TrackerCSRTParams, cheb_attenuation, params.cheb_attenuation);
22+
static FF_GETTER(TrackerCSRTParams, filter_lrGet, params.filter_lr);
23+
static FF_SETTER_NUMBER(TrackerCSRTParams, filter_lr, params.filter_lr);
24+
static FF_GETTER(TrackerCSRTParams, gsl_sigmaGet, params.gsl_sigma);
25+
static FF_SETTER_NUMBER(TrackerCSRTParams, gsl_sigma, params.gsl_sigma);
26+
static FF_GETTER(TrackerCSRTParams, histogram_binsGet, params.histogram_bins);
27+
static FF_SETTER_INT(TrackerCSRTParams, histogram_bins, params.histogram_bins);
28+
static FF_GETTER(TrackerCSRTParams, histogram_lrGet, params.histogram_lr);
29+
static FF_SETTER_NUMBER(TrackerCSRTParams, histogram_lr, params.histogram_lr);
30+
static FF_GETTER(TrackerCSRTParams, hog_clipGet, params.hog_clip);
31+
static FF_SETTER_NUMBER(TrackerCSRTParams, hog_clip, params.hog_clip);
32+
static FF_GETTER(TrackerCSRTParams, hog_orientationsGet, params.hog_orientations);
33+
static FF_SETTER_NUMBER(TrackerCSRTParams, hog_orientations, params.hog_orientations);
34+
static FF_GETTER(TrackerCSRTParams, kaiser_alphaGet, params.kaiser_alpha);
35+
static FF_SETTER_NUMBER(TrackerCSRTParams, kaiser_alpha, params.kaiser_alpha);
36+
static FF_GETTER(TrackerCSRTParams, num_hog_channels_usedGet, params.num_hog_channels_used);
37+
static FF_SETTER_INT(TrackerCSRTParams, num_hog_channels_used, params.num_hog_channels_used);
38+
static FF_GETTER(TrackerCSRTParams, number_of_scalesGet, params.number_of_scales);
39+
static FF_SETTER_INT(TrackerCSRTParams, number_of_scales, params.number_of_scales);
40+
static FF_GETTER(TrackerCSRTParams, paddingGet, params.padding);
41+
static FF_SETTER_NUMBER(TrackerCSRTParams, padding, params.padding);
42+
43+
#if CV_MINOR_VERSION > 4 || (CV_MINOR_VERSION == 4 && CV_SUBMINOR_VERSION > 3)
44+
static FF_GETTER(TrackerCSRTParams, psr_thresholdGet, params.psr_threshold);
45+
static FF_SETTER_NUMBER(TrackerCSRTParams, psr_threshold, params.psr_threshold);
46+
#endif
47+
48+
static FF_GETTER(TrackerCSRTParams, scale_lrGet, params.scale_lr);
49+
static FF_SETTER_NUMBER(TrackerCSRTParams, scale_lr, params.scale_lr);
50+
static FF_GETTER(TrackerCSRTParams, scale_model_max_areaGet, params.scale_model_max_area);
51+
static FF_SETTER_NUMBER(TrackerCSRTParams, scale_model_max_area, params.scale_model_max_area);
52+
static FF_GETTER(TrackerCSRTParams, scale_sigma_factorGet, params.scale_sigma_factor);
53+
static FF_SETTER_NUMBER(TrackerCSRTParams, scale_sigma_factor, params.scale_sigma_factor);
54+
static FF_GETTER(TrackerCSRTParams, scale_stepGet, params.scale_step);
55+
static FF_SETTER_NUMBER(TrackerCSRTParams, scale_step, params.scale_step);
56+
static FF_GETTER(TrackerCSRTParams, template_sizeGet, params.template_size);
57+
static FF_SETTER_NUMBER(TrackerCSRTParams, template_size, params.template_size);
58+
static FF_GETTER(TrackerCSRTParams, use_channel_weightsGet, params.use_channel_weights);
59+
static FF_SETTER_BOOL(TrackerCSRTParams, use_channel_weights, params.use_channel_weights);
60+
static FF_GETTER(TrackerCSRTParams, use_color_namesGet, params.use_color_names);
61+
static FF_SETTER_BOOL(TrackerCSRTParams, use_color_names, params.use_color_names);
62+
static FF_GETTER(TrackerCSRTParams, use_grayGet, params.use_gray);
63+
static FF_SETTER_BOOL(TrackerCSRTParams, use_gray, params.use_gray);
64+
static FF_GETTER(TrackerCSRTParams, use_hogGet, params.use_hog);
65+
static FF_SETTER_BOOL(TrackerCSRTParams, use_hog, params.use_hog);
66+
static FF_GETTER(TrackerCSRTParams, use_rgbGet, params.use_rgb);
67+
static FF_SETTER_BOOL(TrackerCSRTParams, use_rgb, params.use_rgb);
68+
static FF_GETTER(TrackerCSRTParams, use_segmentationGet, params.use_segmentation);
69+
static FF_SETTER_BOOL(TrackerCSRTParams, use_segmentation, params.use_segmentation);
70+
static FF_GETTER(TrackerCSRTParams, weights_lrGet, params.weights_lr);
71+
static FF_SETTER_NUMBER(TrackerCSRTParams, weights_lr, params.weights_lr);
72+
static FF_GETTER_SIMPLE(TrackerCSRTParams, window_functionGet, params.window_function, StringConverter);
73+
static FF_SETTER_STRING(TrackerCSRTParams, window_function, params.window_function);
74+
75+
static Nan::Persistent<v8::FunctionTemplate> constructor;
76+
};
77+
78+
#define FF_UNWRAP_TRACKERCSRTPARAMS(obj) FF_UNWRAP(obj, TrackerCSRTParams)
79+
#define FF_UNWRAP_TRACKERCSRTPARAMS_AND_GET(obj) FF_UNWRAP_TRACKERCSRTPARAMS(obj)->params
80+
81+
#endif
82+
83+
#endif

‎cc/modules/tracking/Trackers/TrackerKCFParams.cc

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,9 @@ NAN_MODULE_INIT(TrackerKCFParams::Init) {
2727
Nan::SetAccessor(instanceTemplate, FF_NEW_STRING("compressed_size"), compressed_sizeGet, compressed_sizeSet);
2828
Nan::SetAccessor(instanceTemplate, FF_NEW_STRING("desc_pca"), desc_pcaGet, desc_pcaSet);
2929
Nan::SetAccessor(instanceTemplate, FF_NEW_STRING("desc_npca"), desc_npcaGet, desc_npcaSet);
30-
30+
#if CV_MINOR_VERSION > 2
31+
Nan::SetAccessor(instanceTemplate, FF_NEW_STRING("detect_thresh"), detect_threshGet, detect_threshSet);
32+
#endif
3133
target->Set(FF_NEW_STRING("TrackerKCFParams"), ctor->GetFunction());
3234
};
3335

‎cc/modules/tracking/Trackers/TrackerKCFParams.h

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,7 @@ class TrackerKCFParams : public Nan::ObjectWrap {
2323
static FF_SETTER_NUMBER(TrackerKCFParams, output_sigma_factor, params.output_sigma_factor);
2424
static FF_GETTER(TrackerKCFParams, pca_learning_rateGet, params.pca_learning_rate);
2525
static FF_SETTER_NUMBER(TrackerKCFParams, pca_learning_rate, params.pca_learning_rate);
26+
2627
static FF_GETTER(TrackerKCFParams, resizeGet, params.resize);
2728
static FF_SETTER_BOOL(TrackerKCFParams, resize, params.resize);
2829
static FF_GETTER(TrackerKCFParams, split_coeffGet, params.split_coeff);
@@ -39,6 +40,11 @@ class TrackerKCFParams : public Nan::ObjectWrap {
3940
static FF_SETTER_UINT(TrackerKCFParams, desc_pca, params.desc_pca);
4041
static FF_GETTER(TrackerKCFParams, desc_npcaGet, params.desc_npca);
4142
static FF_SETTER_UINT(TrackerKCFParams, desc_npca, params.desc_npca);
43+
44+
#if CV_MINOR_VERSION > 2
45+
static FF_GETTER(TrackerKCFParams, detect_threshGet, params.detect_thresh);
46+
static FF_SETTER_NUMBER(TrackerKCFParams, detect_thresh, params.detect_thresh);
47+
#endif
4248

4349
static Nan::Persistent<v8::FunctionTemplate> constructor;
4450
};
Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,35 @@
1+
#ifdef HAVE_TRACKING
2+
3+
#include "TrackerMOSSE.h"
4+
5+
#if CV_MINOR_VERSION > 3
6+
7+
Nan::Persistent<v8::FunctionTemplate> TrackerMOSSE::constructor;
8+
9+
NAN_MODULE_INIT(TrackerMOSSE::Init) {
10+
v8::Local<v8::FunctionTemplate> ctor = Nan::New<v8::FunctionTemplate>(TrackerMOSSE::New);
11+
v8::Local<v8::ObjectTemplate> instanceTemplate = ctor->InstanceTemplate();
12+
13+
Tracker::Init(ctor);
14+
15+
constructor.Reset(ctor);
16+
ctor->SetClassName(FF_NEW_STRING("TrackerMOSSE"));
17+
instanceTemplate->SetInternalFieldCount(1);
18+
19+
target->Set(FF_NEW_STRING("TrackerMOSSE"), ctor->GetFunction());
20+
};
21+
22+
23+
NAN_METHOD(TrackerMOSSE::New) {
24+
FF_ASSERT_CONSTRUCT_CALL(TrackerMOSSE);
25+
FF_METHOD_CONTEXT("TrackerMOSSE::New");
26+
27+
TrackerMOSSE* self = new TrackerMOSSE();
28+
self->tracker = cv::TrackerMOSSE::create();
29+
self->Wrap(info.Holder());
30+
FF_RETURN(info.Holder());
31+
};
32+
33+
#endif
34+
35+
#endif
Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
#include "../Tracker.h"
2+
3+
#if CV_MINOR_VERSION > 3
4+
5+
#ifndef __FF_TRACKERMOSSE_H__
6+
#define __FF_TRACKERMOSSE_H__
7+
8+
class TrackerMOSSE : public Tracker {
9+
public:
10+
cv::Ptr<cv::TrackerMOSSE> tracker;
11+
12+
static NAN_MODULE_INIT(Init);
13+
static NAN_METHOD(New);
14+
15+
static Nan::Persistent<v8::FunctionTemplate> constructor;
16+
17+
cv::Ptr<cv::Tracker> getTracker() {
18+
return tracker;
19+
}
20+
};
21+
22+
#endif
23+
24+
#endif

‎cc/modules/tracking/tracking.cc

Lines changed: 16 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,13 @@
1515
#include "./Trackers/TrackerGOTURN.h"
1616
#endif
1717

18+
#if CV_MINOR_VERSION > 3
19+
#include "./Trackers/TrackerMOSSE.h"
20+
#endif
21+
#if CV_MINOR_VERSION > 4 || (CV_MINOR_VERSION == 4 && CV_SUBMINOR_VERSION > 0)
22+
#include "./Trackers/TrackerCSRT.h"
23+
#endif
24+
1825
NAN_MODULE_INIT(Tracking::Init) {
1926
TrackerBoosting::Init(target);
2027
TrackerMedianFlow::Init(target);
@@ -34,6 +41,14 @@ NAN_MODULE_INIT(Tracking::Init) {
3441
#if CV_MINOR_VERSION > 1
3542
TrackerGOTURN::Init(target);
3643
#endif
44+
45+
#if CV_MINOR_VERSION > 3
46+
TrackerMOSSE::Init(target);
47+
#endif
48+
#if CV_MINOR_VERSION > 4 || (CV_MINOR_VERSION == 4 && CV_SUBMINOR_VERSION > 0)
49+
TrackerCSRT::Init(target);
50+
#endif
51+
3752
};
3853

39-
#endif
54+
#endif

‎cc/opencv4nodejs.cc

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -54,6 +54,7 @@ void init(v8::Local<v8::Object> target) {
5454
v8::Local<v8::Object> version = Nan::New<v8::Object>();
5555
Nan::Set(version, FF_NEW_STRING("major"), Nan::New(CV_MAJOR_VERSION));
5656
Nan::Set(version, FF_NEW_STRING("minor"), Nan::New(CV_MINOR_VERSION));
57+
Nan::Set(version, FF_NEW_STRING("subminor"), Nan::New(CV_SUBMINOR_VERSION));
5758
Nan::Set(target, FF_NEW_STRING("version"), version);
5859

5960
v8::Local<v8::Object> xmodules = Nan::New<v8::Object>();

‎lib/typings/MultiTracker.d.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,5 +8,5 @@ export class MultiTracker {
88
addMEDIANFLOW(frame: Mat, boundingBox: Rect): boolean;
99
addMil(frame: Mat, boundingBox: Rect): boolean;
1010
addTLD(frame: Mat, boundingBox: Rect): boolean;
11-
update(frame: Mat): Rect;
11+
update(frame: Mat): Rect[];
1212
}

‎lib/typings/TrackerCSRT.d.ts

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
import { Mat } from './Mat.d';
2+
import { Rect } from './Rect.d';
3+
import { TrackerCSRTParams } from './TrackerCSRTParams.d';
4+
5+
export class TrackerCSRT {
6+
constructor();
7+
constructor(params: TrackerCSRTParams);
8+
clear(): void;
9+
init(frame: Mat, boundingBox: Rect): boolean;
10+
update(frame: Mat): Rect;
11+
}

‎lib/typings/TrackerCSRTParams.d.ts

Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,31 @@
1+
export class TrackerKCFParams {
2+
readonly admm_iterations: number;
3+
readonly background_ratio: number;
4+
readonly cheb_attenuation: number;
5+
readonly filter_lr: number;
6+
readonly gsl_sigma: number;
7+
readonly histogram_bins: number;
8+
readonly histogram_lr: number;
9+
readonly hog_clip: number;
10+
readonly hog_orientations: number;
11+
readonly kaiser_alpha: number;
12+
readonly num_hog_channels_used: number;
13+
readonly number_of_scales: number;
14+
readonly padding: number;
15+
//readonly psr_threshold: number;
16+
readonly scale_lr: number;
17+
readonly scale_model_max_area: number;
18+
readonly scale_sigma_factor: number;
19+
readonly scale_step: number;
20+
readonly template_size: number;
21+
readonly use_channel_weights: bool;
22+
readonly use_color_names: bool;
23+
readonly use_gray: bool;
24+
readonly use_hog: bool;
25+
readonly use_rgb: bool;
26+
readonly use_segmentation: bool;
27+
readonly weights_lr: number;
28+
readonly window_function: string;
29+
30+
constructor();
31+
}

‎lib/typings/TrackerKCFParams.d.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,5 +12,6 @@ export class TrackerKCFParams {
1212
readonly compressed_size: number;
1313
readonly desc_pca: number;
1414
readonly desc_npca: number;
15+
readonly detect_thresh: number;
1516
constructor();
1617
}

‎lib/typings/TrackerMOSSE.d.ts

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
import { Mat } from './Mat.d';
2+
import { Rect } from './Rect.d';
3+
4+
export class TrackerKCF {
5+
constructor();
6+
clear(): void;
7+
init(frame: Mat, boundingBox: Rect): boolean;
8+
update(frame: Mat): Rect;
9+
}

‎package.json

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "@nut-tree/opencv4nodejs-prebuilt",
3-
"version": "4.14.1",
3+
"version": "4.15.0-b3",
44
"description": "This is a fork of opencv4nodejs which provides pre-build binaries",
55
"keywords": [
66
"opencv",
@@ -46,8 +46,8 @@
4646
"macro-inferno": "^0.2.3",
4747
"nan": "^2.12.1",
4848
"native-node-utils": "^0.1.5",
49-
"prebuild-install": "^5.2.4",
50-
"opencv-build": "^0.0.17"
49+
"prebuild-install": "^5.3.0",
50+
"opencv-build": "^0.1.3"
5151
},
5252
"optionalDependencies": {
5353
"@types/node": ">6"

‎test/package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
"name": "opencv4nodejs_test",
33
"version": "1.1.0",
44
"scripts": {
5-
"test": "mocha --require ./globals --timeout 2000 --recursive ./tests",
5+
"test": "mocha --require ./globals --timeout 30000 --recursive ./tests",
66
"test-appveyor": "mocha --require ./globals --timeout 30000 --recursive ./tests",
77
"test-docker": "DOCKER_BUILD=true mocha --require ./globals --timeout 30000 --recursive ./tests",
88
"test-externalMemTrackingOther": "mocha --require ./globals --timeout 30000 --recursive ./externalMemTracking/other",

‎test/tests/core/core.test.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -267,7 +267,7 @@ describe('core', () => {
267267
});
268268
});
269269

270-
if (asyncHooks && !process.env.DISABLE_ASYNC_HOOKS_TEST) {
270+
if (asyncHooks && global.utils.getNodeMajorVersion() > 8) {
271271
describe('async_hooks', () => {
272272
it('should trigger `init` callback in async_hooks', () => {
273273
let typeFound = false

‎test/tests/modules/tracking/trackerParamTests.js

Lines changed: 40 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -32,18 +32,56 @@ module.exports = () => {
3232
compress_feature: false,
3333
max_patch_size: 64,
3434
compressed_size: 32,
35+
detect_thresh: 0.5,
3536
desc_pca: cv.trackerKCFModes.GRAY,
3637
desc_npca: cv.trackerKCFModes.CN
37-
3838
};
3939

4040
const trackerParams = new cv.TrackerKCFParams();
41-
Object.keys(params).forEach((param) => { trackerParams[param] = params[param]; });
41+
Object.keys(params).forEach(param => { trackerParams[param] = params[param]; });
4242

4343
const floatSafe = true;
4444
assertPropsWithValue(trackerParams)(params, floatSafe);
4545
});
46+
((cv.version.minor > 4 || (cv.version.minor === 4 && cv.version.subminor > 0)) ? it : it.skip)('TrackerCSRTParams', () => {
47+
const params = {
48+
admm_iterations: 22,
49+
background_ratio: 3,
50+
cheb_attenuation: 43,
51+
filter_lr: 0.03,
52+
gsl_sigma: 1.2,
53+
histogram_bins: 20,
54+
histogram_lr: 0.4,
55+
hog_clip: 0.3,
56+
hog_orientations: 11,
57+
kaiser_alpha: 3.2,
58+
num_hog_channels_used: 22,
59+
number_of_scales: 30,
60+
padding: 4.2,
61+
scale_lr: 0.2,
62+
scale_model_max_area: 256.2,
63+
scale_sigma_factor: 0.3,
64+
scale_step: 1.03,
65+
template_size: 300,
66+
use_channel_weights: false,
67+
use_color_names: false,
68+
use_gray: false,
69+
use_hog: false,
70+
use_rgb: true,
71+
use_segmentation: false,
72+
weights_lr: 0.03,
73+
window_function: "kaiser"
74+
};
75+
if(cv.version.minor > 4 || (cv.version.minor === 4 && cv.version.subminor > 3)){
76+
params.psr_threshold = 0.4;
77+
}
78+
79+
const trackerParams = new cv.TrackerCSRTParams();
80+
Object.keys(params).forEach((param) => { trackerParams[param] = params[param]; });
4681

82+
const floatSafe = true;
83+
assertPropsWithValue(trackerParams)(params, floatSafe);
84+
});
4785
it('TrackerMILParams', () => {
4886
const params = {
4987
samplerInitInRadius: 2.5,

‎test/tests/modules/tracking/trackerTests.js

Lines changed: 43 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -80,14 +80,23 @@ module.exports = () => {
8080
'TrackerTLD'
8181
];
8282

83-
if (cv.version.minor > 0) {
83+
const hasCSRT = (cv.version.minor > 4 || (cv.version.minor === 4 && cv.version.patch > 0));
84+
const hasMOSSE = (cv.version.minor > 3);
85+
const hasKCF = (cv.version.minor > 0);
86+
87+
if (hasKCF) {
8488
trackerNames.push('TrackerKCF');
8589
}
8690

8791
if (cv.version.minor > 1) {
8892
// trackerNames.push('TrackerGOTURN'); TODO: sample goturn.prototxt
8993
}
90-
94+
if (hasCSRT) {
95+
trackerNames.push('TrackerCSRT');
96+
}
97+
if (hasMOSSE) {
98+
trackerNames.push('TrackerMOSSE');
99+
}
91100
trackerNames.forEach((trackerName) => {
92101
generateTrackerTests(trackerName);
93102
});
@@ -123,18 +132,48 @@ module.exports = () => {
123132
const ret = tracker.addKCF(testImg, new cv.Rect(0, 0, 10, 10));
124133
expect(ret).to.true;
125134
});
135+
if(hasCSRT){
136+
it('addCSRT', () => {
137+
const tracker = new cv.MultiTracker();
138+
const ret = tracker.addCSRT(testImg, new cv.Rect(0, 0, 10, 10));
139+
expect(ret).to.true;
140+
});
141+
}
142+
143+
if(hasMOSSE){
144+
it('addMOSSE', () => {
145+
const tracker = new cv.MultiTracker();
146+
const ret = tracker.addMOSSE(testImg, new cv.Rect(0, 0, 10, 10));
147+
expect(ret).to.true;
148+
});
149+
}
126150
});
127151

128152
describe('update', () => {
129153
funcShouldRequireArgs(() => (new cv.MultiTracker()).update());
130154

131155
it('returns bounding box', () => {
132156
const tracker = new cv.MultiTracker();
133-
['addMIL', 'addBOOSTING', 'addMEDIANFLOW', 'addTLD', 'addKCF'].forEach((addMethod) => {
157+
const methods = ['addMIL', 'addBOOSTING', 'addMEDIANFLOW', 'addTLD', 'addKCF'];
158+
if (hasKCF) {
159+
methods.push('addKCF');
160+
}
161+
162+
// if (cv.version.minor > 1) {
163+
// methods.push('addGOTURN');
164+
// }
165+
if (hasCSRT) {
166+
methods.push('addCSRT');
167+
}
168+
if (hasMOSSE) {
169+
methods.push('addMOSSE');
170+
}
171+
172+
methods.forEach((addMethod) => {
134173
tracker[addMethod](testImg, new cv.Rect(0, 0, 10, 10));
135174
});
136175
const rects = tracker.update(testImg);
137-
expect(rects).to.be.an('array').lengthOf(5);
176+
expect(rects).to.be.an('array').lengthOf(methods.length);
138177
rects.forEach((rect) => {
139178
expect(rect).to.be.instanceOf(cv.Rect);
140179
});

‎test/utils/index.js

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,9 +2,12 @@ const testUtils = require('./testUtils');
22
const matTestUtils = require('./matTestUtils');
33
const defaultTests = require('./defaultTests');
44

5+
const getNodeMajorVersion = () => parseInt(process.version.split('.')[0].slice(1))
6+
57
module.exports = Object.assign(
68
{},
79
testUtils,
810
matTestUtils,
9-
defaultTests
11+
defaultTests,
12+
{ getNodeMajorVersion }
1013
);

0 commit comments

Comments
 (0)
This repository has been archived.