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

Commit 45fbd39

Browse files
committed
Update: BFMatcher constructor & optional args
1 parent 8f41516 commit 45fbd39

File tree

2 files changed

+38
-24
lines changed

2 files changed

+38
-24
lines changed

cc/modules/features2d/BFMatcher.cc

Lines changed: 29 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -4,31 +4,43 @@ Nan::Persistent<v8::FunctionTemplate> BFMatcher::constructor;
44

55
NAN_MODULE_INIT(BFMatcher::Init) {
66
v8::Local<v8::FunctionTemplate> ctor = Nan::New<v8::FunctionTemplate>(BFMatcher::New);
7+
v8::Local<v8::ObjectTemplate> instanceTemplate = ctor->InstanceTemplate();
8+
9+
BFMatcher::Init(ctor);
710
constructor.Reset(ctor);
8-
ctor->InstanceTemplate()->SetInternalFieldCount(1);
9-
ctor->SetClassName(Nan::New("BFMatcher").ToLocalChecked());
11+
instanceTemplate->SetInternalFieldCount(1);
12+
13+
// ctor->SetClassName(Nan::New("BFMatcher").ToLocalChecked());
14+
ctor->SetClassName(FF_NEW_STRING("BFMatcher"));
1015

11-
Nan::SetAccessor(ctor->InstanceTemplate(), Nan::New("normType").ToLocalChecked(), GetNormType);
12-
Nan::SetAccessor(ctor->InstanceTemplate(), Nan::New("crossCheck").ToLocalChecked(), GetCrossCheck);
1316

14-
target->Set(Nan::New("BFMatcher").ToLocalChecked(), ctor->GetFunction());
17+
Nan::SetAccessor(instanceTemplate, Nan::New("normType").ToLocalChecked(), BFMatcher::GetNormType);
18+
Nan::SetAccessor(instanceTemplate, Nan::New("crossCheck").ToLocalChecked(), BFMatcher::GetCrossCheck);
19+
20+
// target->Set(Nan::New("BFMatcher").ToLocalChecked(), ctor->GetFunction());
21+
target->Set(FF_NEW_STRING("CascadeClassifier"), ctor->GetFunction());
1522
};
1623

1724
NAN_METHOD(BFMatcher::New) {
1825
FF_METHOD_CONTEXT("BFMatcher::New");
1926
BFMatcher* self = new BFMatcher();
20-
if (info.Length() > 0) {
21-
FF_ARG_INT(0, int normType);
22-
FF_ARG_INT(1, bool crossCheck);
2327

24-
self->bfmatcher = cv::BFMatcher(normType, crossCheck);
25-
}
26-
self->Wrap(info.Holder());
27-
info.GetReturnValue().Set(info.Holder());
28-
}
28+
// optional args
29+
bool hasOptArgsObj = FF_HAS_ARG(0) && info[0]->IsObject();
30+
FF_OBJ optArgs = hasOptArgsObj ? info[0]->ToObject() : FF_NEW_OBJ();
31+
32+
FF_GET_NUMBER_IFDEF(optArgs, double normType, "normType", cv::NORM_L2);
33+
FF_GET_BOOL_IFDEF(optArgs, bool crossCheck, "crossCheck", false);
2934

30-
NAN_METHOD(BFMatcher::Clone) {
31-
GaussianBlurWorker worker(Mat::Converter::unwrap(info.This()));
32-
FF_WORKER_SYNC("Mat::GaussianBlur", worker);
33-
info.GetReturnValue().Set(worker.getReturnValue());
35+
if (!hasOptArgsObj) {
36+
FF_ARG_NUMBER_IFDEF(0, normType, normType);
37+
FF_ARG_INT_IFDEF(1, crossCheck, crossCheck);
38+
}
39+
40+
self->Wrap(info.Holder());
41+
self->bfmatcher = cv::BFMatcher::create(
42+
normType,
43+
crossCheck
44+
);
45+
FF_RETURN(info.Holder());
3446
}

cc/modules/features2d/BFMatcher.h

Lines changed: 9 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -7,18 +7,21 @@
77

88
class BFMatcher : public Nan::ObjectWrap {
99
public:
10-
cv::BFMatcher BFMatcher;
10+
cv::BFMatcher bfmatcher;
11+
12+
int normType;
13+
bool crossCheck;
1114

1215
static NAN_MODULE_INIT(Init);
1316
static NAN_METHOD(New);
1417

15-
static FF_GETTER(BFMatcher, GetNormType, bfmatcher.normType)
16-
static FF_GETTER(BFMatcher, GetCrossCheck, bfmatcher.crossCheck)
18+
static FF_GETTER(BFMatcher, GetNormType, normType)
19+
static FF_GETTER(BFMatcher, GetCrossCheck, crossCheck)
1720

1821
static Nan::Persistent<v8::FunctionTemplate> constructor;
1922

20-
cv::DMatch* getNativeObjectPtr() { return &bfmatcher; }
21-
cv::DMatch getNativeObject() { return bfmatcher; }
23+
cv::BFMatcher* getNativeObjectPtr() { return &bfmatcher; }
24+
cv::BFMatcher getNativeObject() { return bfmatcher; }
2225

2326
typedef InstanceConverter<BFMatcher, cv::BFMatcher> Converter;
2427

@@ -31,7 +34,6 @@ class BFMatcher : public Nan::ObjectWrap {
3134
static const char* getClassName() {
3235
return "BFMatcher";
3336
}
34-
35-
}
37+
};
3638

3739
#endif

0 commit comments

Comments
 (0)