diff --git a/src/Constants.cc b/src/Constants.cc index f2bd76a..f492a2f 100644 --- a/src/Constants.cc +++ b/src/Constants.cc @@ -85,6 +85,11 @@ void Constants::Init(Local target) { CONST_ENUM(NORM_RELATIVE); CONST_ENUM(NORM_TYPE_MASK); + CONST_ENUM(RETR_EXTERNAL); + CONST_ENUM(RETR_LIST); + CONST_ENUM(RETR_CCOMP); + CONST_ENUM(RETR_TREE); + target->Set(Nan::New("Constants").ToLocalChecked(), obj); } diff --git a/src/Matrix.cc b/src/Matrix.cc index 51525ff..5985a6d 100755 --- a/src/Matrix.cc +++ b/src/Matrix.cc @@ -70,6 +70,7 @@ void Matrix::Init(Local target) { Nan::SetPrototypeMethod(ctor, "bitwiseNot", BitwiseNot); Nan::SetPrototypeMethod(ctor, "bitwiseAnd", BitwiseAnd); Nan::SetPrototypeMethod(ctor, "countNonZero", CountNonZero); + Nan::SetPrototypeMethod(ctor, "moments", Moments); Nan::SetPrototypeMethod(ctor, "canny", Canny); Nan::SetPrototypeMethod(ctor, "dilate", Dilate); Nan::SetPrototypeMethod(ctor, "erode", Erode); @@ -1354,6 +1355,45 @@ NAN_METHOD(Matrix::Split) { info.GetReturnValue().Set(Nan::Null()); } */ +NAN_METHOD(Matrix::Moments) { + Nan::HandleScope scope; + + Matrix *self = Nan::ObjectWrap::Unwrap(info.This()); + + cv::Moments mo = moments( self->mat, false ); + + Local res = Nan::New(); + + res->Set(Nan::New("m00").ToLocalChecked(), Nan::New(mo.m00)); + res->Set(Nan::New("m10").ToLocalChecked(), Nan::New(mo.m10)); + res->Set(Nan::New("m01").ToLocalChecked(), Nan::New(mo.m01)); + res->Set(Nan::New("m20").ToLocalChecked(), Nan::New(mo.m20)); + res->Set(Nan::New("m11").ToLocalChecked(), Nan::New(mo.m11)); + res->Set(Nan::New("m02").ToLocalChecked(), Nan::New(mo.m02)); + res->Set(Nan::New("m30").ToLocalChecked(), Nan::New(mo.m30)); + res->Set(Nan::New("m21").ToLocalChecked(), Nan::New(mo.m21)); + res->Set(Nan::New("m12").ToLocalChecked(), Nan::New(mo.m12)); + res->Set(Nan::New("m03").ToLocalChecked(), Nan::New(mo.m03)); + + res->Set(Nan::New("mu20").ToLocalChecked(), Nan::New(mo.mu20)); + res->Set(Nan::New("mu11").ToLocalChecked(), Nan::New(mo.mu11)); + res->Set(Nan::New("mu02").ToLocalChecked(), Nan::New(mo.mu02)); + res->Set(Nan::New("mu30").ToLocalChecked(), Nan::New(mo.mu30)); + res->Set(Nan::New("mu21").ToLocalChecked(), Nan::New(mo.mu21)); + res->Set(Nan::New("mu12").ToLocalChecked(), Nan::New(mo.mu12)); + res->Set(Nan::New("mu03").ToLocalChecked(), Nan::New(mo.mu03)); + + res->Set(Nan::New("nu20").ToLocalChecked(), Nan::New(mo.nu20)); + res->Set(Nan::New("nu11").ToLocalChecked(), Nan::New(mo.nu11)); + res->Set(Nan::New("nu02").ToLocalChecked(), Nan::New(mo.nu02)); + res->Set(Nan::New("nu30").ToLocalChecked(), Nan::New(mo.nu30)); + res->Set(Nan::New("nu21").ToLocalChecked(), Nan::New(mo.nu21)); + res->Set(Nan::New("nu12").ToLocalChecked(), Nan::New(mo.nu12)); + res->Set(Nan::New("nu03").ToLocalChecked(), Nan::New(mo.nu03)); + + info.GetReturnValue().Set(res); +} + NAN_METHOD(Matrix::Canny) { Nan::HandleScope scope; diff --git a/src/Matrix.h b/src/Matrix.h index 2d48a59..042c86d 100755 --- a/src/Matrix.h +++ b/src/Matrix.h @@ -74,6 +74,7 @@ public: JSFUNC(BitwiseAnd) JSFUNC(CountNonZero) //JSFUNC(Split) + JSFUNC(Moments) JSFUNC(Canny) JSFUNC(Dilate) JSFUNC(Erode)