1
+ #ifdef HAVE_XIMGPROC
2
+
3
+ #include "SuperpixelSLIC.h"
4
+
5
+ Nan::Persistent<v8::FunctionTemplate> SuperpixelSLIC::constructor;
6
+
7
+ NAN_MODULE_INIT(SuperpixelSLIC::Init) {
8
+ v8::Local<v8::FunctionTemplate> ctor = Nan::New<v8::FunctionTemplate>(SuperpixelSLIC::New);
9
+ v8::Local<v8::ObjectTemplate> instanceTemplate = ctor->InstanceTemplate();
10
+ constructor.Reset(ctor);
11
+ instanceTemplate->SetInternalFieldCount(1);
12
+ ctor->SetClassName(Nan::New("SuperpixelSLIC").ToLocalChecked());
13
+
14
+ Nan::SetAccessor(instanceTemplate, Nan::New("img").ToLocalChecked(), SuperpixelSLIC::GetImg);
15
+ Nan::SetAccessor(instanceTemplate, Nan::New("labels").ToLocalChecked(), SuperpixelSLIC::GetLabels);
16
+ Nan::SetAccessor(instanceTemplate, Nan::New("labelContourMask").ToLocalChecked(), SuperpixelSLIC::GetLabelContourMask);
17
+ Nan::SetAccessor(instanceTemplate, Nan::New("algorithm").ToLocalChecked(), SuperpixelSLIC::GetAlgorithm);
18
+ Nan::SetAccessor(instanceTemplate, Nan::New("regionSize").ToLocalChecked(), SuperpixelSLIC::GetRegionSize);
19
+ Nan::SetAccessor(instanceTemplate, Nan::New("ruler").ToLocalChecked(), SuperpixelSLIC::GetRuler);
20
+ Nan::SetAccessor(instanceTemplate, Nan::New("numCalculatedSuperpixels").ToLocalChecked(), SuperpixelSLIC::GetNumCalculatedSuperpixels);
21
+
22
+ Nan::SetPrototypeMethod(ctor, "iterate", SuperpixelSLIC::Iterate);
23
+
24
+ target->Set(Nan::New("SuperpixelSLIC").ToLocalChecked(), ctor->GetFunction());
25
+ };
26
+
27
+ NAN_METHOD(SuperpixelSLIC::New) {
28
+ FF_METHOD_CONTEXT("SuperpixelSLIC::New");
29
+ if (!info.IsConstructCall()) {
30
+ FF_THROW("expected new key word");
31
+ }
32
+ SuperpixelSLIC* self = new SuperpixelSLIC();
33
+
34
+ FF_ARG_INSTANCE(0, self->img, Mat::constructor, FF_UNWRAP_MAT_AND_GET);
35
+ FF_ARG_INT(1, self->algorithm);
36
+ FF_ARG_INT_IFDEF(2, self->regionSize, 10);
37
+ FF_ARG_INT_IFDEF(3, self->ruler, 10.0);
38
+
39
+ self->Wrap(info.Holder());
40
+ self->superpixelSlic = cv::ximgproc::createSuperpixelSLIC(
41
+ self->img,
42
+ self->algorithm,
43
+ self->regionSize,
44
+ self->ruler
45
+ );
46
+ info.GetReturnValue().Set(info.Holder());
47
+ }
48
+
49
+ NAN_METHOD(SuperpixelSLIC::Iterate) {
50
+ FF_METHOD_CONTEXT("SuperpixelSLIC::Iterate");
51
+
52
+ FF_ARG_UINT_IFDEF(0, uint iterations, 10);
53
+
54
+ SuperpixelSLIC* self = FF_UNWRAP(info.This(), SuperpixelSLIC);
55
+ self->superpixelSlic->iterate((int)iterations);
56
+ self->superpixelSlic->getLabels(self->labels);
57
+ self->numCalculatedSuperpixels = self->superpixelSlic->getNumberOfSuperpixels();
58
+ self->superpixelSlic->getLabelContourMask(self->labelContourMask, false);
59
+ }
60
+
61
+ #endif // HAVE_XIMGPROC
0 commit comments