forked from udarrr/opencv4nodejs-prebuilt-install
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathTrainData.cc
48 lines (38 loc) · 1.59 KB
/
TrainData.cc
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
#include "opencv_modules.h"
#ifdef HAVE_OPENCV_ML
#include "TrainData.h"
#include "Mat.h"
Nan::Persistent<v8::FunctionTemplate> TrainData::constructor;
NAN_MODULE_INIT(TrainData::Init) {
v8::Local<v8::FunctionTemplate> ctor = Nan::New<v8::FunctionTemplate>(TrainData::New);
constructor.Reset(ctor);
ctor->InstanceTemplate()->SetInternalFieldCount(1);
ctor->SetClassName(FF::newString("TrainData"));
Nan::SetAccessor(ctor->InstanceTemplate(), FF::newString("layout"), layout_getter);
Nan::SetAccessor(ctor->InstanceTemplate(), FF::newString("samples"), samples_getter);
Nan::SetAccessor(ctor->InstanceTemplate(), FF::newString("responses"), responses_getter);
Nan::SetAccessor(ctor->InstanceTemplate(), FF::newString("varIdx"), varIdx_getter);
Nan::SetAccessor(ctor->InstanceTemplate(), FF::newString("sampleWeights"), sampleWeights_getter);
Nan::SetAccessor(ctor->InstanceTemplate(), FF::newString("varType"), varType_getter);
Nan::Set(target,FF::newString("TrainData"), FF::getFunction(ctor));
};
NAN_METHOD(TrainData::New) {
FF::TryCatch tryCatch("TrainData::New");
FF_ASSERT_CONSTRUCT_CALL();
TrainData::NewWorker worker;
if (worker.applyUnwrappers(info)) {
return tryCatch.reThrow();
}
// TODO: uchar / char converter
std::vector<uchar> varType;
for (auto val : worker.varType) {
varType.push_back(val);
}
TrainData* self = new TrainData();
self->self = cv::ml::TrainData::create(
worker.samples, worker.layout, worker.responses, worker.varIdx, worker.sampleIdx, worker.sampleWeights, varType
);
self->Wrap(info.Holder());
info.GetReturnValue().Set(info.Holder());
};
#endif