Skip to content
This repository was archived by the owner on Oct 18, 2023. It is now read-only.

Commit 429bbf0

Browse files
committed
CSRT MOSSE OpenCV version
1 parent 34bcc16 commit 429bbf0

File tree

9 files changed

+87
-19
lines changed

9 files changed

+87
-19
lines changed

.travis.yml

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,14 @@ env:
3232
TAG=3.4.3
3333
- BUILD_TASK=test
3434
TAG=3.4.3-contrib
35+
- BUILD_TASK=test
36+
TAG=3.4.4
37+
- BUILD_TASK=test
38+
TAG=3.4.4-contrib
39+
- BUILD_TASK=test
40+
TAG=3.4.5
41+
- BUILD_TASK=test
42+
TAG=3.4.5-contrib
3543

3644
before_install:
3745
- chmod +x ./ci/$BUILD_TASK/$BUILD_TASK.sh

cc/modules/tracking/MultiTracker.cc

Lines changed: 9 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -19,8 +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
2223
Nan::SetPrototypeMethod(ctor, "addMOSSE", MultiTracker::AddTLD);
24+
#endif
25+
#if CV_MINOR_VERSION > 4 || (CV_MINOR_VERSION == 4 && CV_SUBMINOR_VERSION > 3)
2326
Nan::SetPrototypeMethod(ctor, "addCSRT", MultiTracker::AddKCF);
27+
#endif
2428
Nan::SetPrototypeMethod(ctor, "update", MultiTracker::Update);
2529

2630
target->Set(FF_NEW_STRING("MultiTracker"), ctor->GetFunction());
@@ -116,32 +120,29 @@ NAN_METHOD(MultiTracker::Update) {
116120
}
117121
FF_RETURN(jsRects);
118122
}
123+
#if CV_MINOR_VERSION > 3
119124

120125
NAN_METHOD(MultiTracker::AddMOSSE) {
121126
FF_METHOD_CONTEXT("MultiTracker::AddMOSSE");
122127
FF_ARG_INSTANCE(0, cv::Mat image, Mat::constructor, FF_UNWRAP_MAT_AND_GET);
123128
FF_ARG_INSTANCE(1, cv::Rect2d boundingBox, Rect::constructor, FF_UNWRAP_RECT_AND_GET);
124-
#if CV_MINOR_VERSION > 3
125129
cv::Ptr<cv::Tracker> type = cv::TrackerMOSSE::create();
126-
#else
127-
const std::string type("MOSSE");
128-
#endif
129130
bool ret = FF_UNWRAP(info.This(), MultiTracker)->tracker.add(type, image, boundingBox);
130131
FF_RETURN(Nan::New(ret));
131132
}
132133

134+
#endif
135+
#if CV_MINOR_VERSION > 4 || (CV_MINOR_VERSION == 4 && CV_SUBMINOR_VERSION > 3)
136+
133137
NAN_METHOD(MultiTracker::AddCSRT) {
134138
FF_METHOD_CONTEXT("MultiTracker::AddCSRT");
135139
FF_ARG_INSTANCE(0, cv::Mat image, Mat::constructor, FF_UNWRAP_MAT_AND_GET);
136140
FF_ARG_INSTANCE(1, cv::Rect2d boundingBox, Rect::constructor, FF_UNWRAP_RECT_AND_GET);
137-
#if CV_MINOR_VERSION > 3
138141
cv::Ptr<cv::Tracker> type = cv::TrackerCSRT::create();
139-
#else
140-
const std::string type("CSRT");
141-
#endif
142142
bool ret = FF_UNWRAP(info.This(), MultiTracker)->tracker.add(type, image, boundingBox);
143143
FF_RETURN(Nan::New(ret));
144144
}
145+
#endif
145146

146147
#endif
147148

cc/modules/tracking/Trackers/TrackerCSRT.cc

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
#include "TrackerCSRT.h"
44
#include "TrackerCSRTParams.h"
55

6-
#if CV_MINOR_VERSION > 3
6+
#if CV_MINOR_VERSION > 4 || (CV_MINOR_VERSION == 4 && CV_SUBMINOR_VERSION > 0)
77

88
Nan::Persistent<v8::FunctionTemplate> TrackerCSRT::constructor;
99

cc/modules/tracking/Trackers/TrackerCSRT.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
#include "../Tracker.h"
22

3-
#if CV_MINOR_VERSION > 3
3+
#if CV_MINOR_VERSION > 4 || (CV_MINOR_VERSION == 4 && CV_SUBMINOR_VERSION > 0)
44

55
#ifndef __FF_TRACKERCSRT_H__
66
#define __FF_TRACKERCSRT_H__

cc/modules/tracking/Trackers/TrackerCSRTParams.cc

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22

33
#include "TrackerCSRTParams.h"
44

5-
#if CV_MINOR_VERSION > 3
5+
#if CV_MINOR_VERSION > 4 || (CV_MINOR_VERSION == 4 && CV_SUBMINOR_VERSION > 0)
66

77
Nan::Persistent<v8::FunctionTemplate> TrackerCSRTParams::constructor;
88

@@ -27,7 +27,9 @@ NAN_MODULE_INIT(TrackerCSRTParams::Init) {
2727
Nan::SetAccessor(instanceTemplate, FF_NEW_STRING("num_hog_channels_used"), num_hog_channels_usedGet, num_hog_channels_usedSet);
2828
Nan::SetAccessor(instanceTemplate, FF_NEW_STRING("number_of_scales"), number_of_scalesGet, number_of_scalesSet);
2929
Nan::SetAccessor(instanceTemplate, FF_NEW_STRING("padding"), paddingGet, paddingSet);
30-
//Nan::SetAccessor(instanceTemplate, FF_NEW_STRING("psr_threshold"), psr_thresholdGet, psr_thresholdSet);
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
3133
Nan::SetAccessor(instanceTemplate, FF_NEW_STRING("scale_lr"), scale_lrGet, scale_lrSet);
3234
Nan::SetAccessor(instanceTemplate, FF_NEW_STRING("scale_model_max_area"), scale_model_max_areaGet, scale_model_max_areaSet);
3335
Nan::SetAccessor(instanceTemplate, FF_NEW_STRING("scale_sigma_factor"), scale_sigma_factorGet, scale_sigma_factorSet);

cc/modules/tracking/Trackers/TrackerCSRTParams.h

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
#include "macros.h"
22
#include <opencv2/tracking.hpp>
33

4-
#if CV_MINOR_VERSION > 3
4+
#if CV_MINOR_VERSION > 4 || (CV_MINOR_VERSION == 4 && CV_SUBMINOR_VERSION > 0)
55

66
#ifndef __FF_TRACKERCSRTPARAMS_H__
77
#define __FF_TRACKERCSRTPARAMS_H__
@@ -39,8 +39,12 @@ class TrackerCSRTParams : public Nan::ObjectWrap {
3939
static FF_SETTER_INT(TrackerCSRTParams, number_of_scales, params.number_of_scales);
4040
static FF_GETTER(TrackerCSRTParams, paddingGet, params.padding);
4141
static FF_SETTER_NUMBER(TrackerCSRTParams, padding, params.padding);
42-
//static FF_GETTER(TrackerCSRTParams, psr_thresholdGet, params.psr_threshold);
43-
//static FF_SETTER_NUMBER(TrackerCSRTParams, psr_threshold, params.psr_threshold);
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+
4448
static FF_GETTER(TrackerCSRTParams, scale_lrGet, params.scale_lr);
4549
static FF_SETTER_NUMBER(TrackerCSRTParams, scale_lr, params.scale_lr);
4650
static FF_GETTER(TrackerCSRTParams, scale_model_max_areaGet, params.scale_model_max_area);

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>();

test/tests/modules/tracking/trackerParamTests.js

Lines changed: 39 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -35,16 +35,53 @@ module.exports = () => {
3535
detect_thresh: 0.5,
3636
desc_pca: cv.trackerKCFModes.GRAY,
3737
desc_npca: cv.trackerKCFModes.CN
38-
3938
};
4039

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

4443
const floatSafe = true;
4544
assertPropsWithValue(trackerParams)(params, floatSafe);
4645
});
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]; });
4781

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

test/tests/modules/tracking/trackerTests.js

Lines changed: 17 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -87,7 +87,7 @@ module.exports = () => {
8787
if (cv.version.minor > 1) {
8888
// trackerNames.push('TrackerGOTURN'); TODO: sample goturn.prototxt
8989
}
90-
if (cv.version.minor > 3) {
90+
if (cv.version.minor > 4 || (cv.version.minor === 4 && cv.version.patch > 0)) {
9191
trackerNames.push('TrackerCSRT');
9292
}
9393
if (cv.version.minor > 3) {
@@ -147,7 +147,22 @@ module.exports = () => {
147147

148148
it('returns bounding box', () => {
149149
const tracker = new cv.MultiTracker();
150-
['addMIL', 'addBOOSTING', 'addMEDIANFLOW', 'addTLD', 'addKCF', 'addCSRT', 'addMOSSE'].forEach((addMethod) => {
150+
const methods = ['addMIL', 'addBOOSTING', 'addMEDIANFLOW', 'addTLD', 'addKCF', 'addCSRT', 'addMOSSE'];
151+
if (cv.version.minor > 0) {
152+
methods.push('addKCF');
153+
}
154+
155+
// if (cv.version.minor > 1) {
156+
// methods.push('addGOTURN');
157+
// }
158+
if (cv.version.minor > 4 || (cv.version.minor === 4 && cv.version.patch > 0)) {
159+
methods.push('addCSRT');
160+
}
161+
if (cv.version.minor > 3) {
162+
methods.push('addMOSSE');
163+
}
164+
165+
methods.forEach((addMethod) => {
151166
tracker[addMethod](testImg, new cv.Rect(0, 0, 10, 10));
152167
});
153168
const rects = tracker.update(testImg);

0 commit comments

Comments
 (0)