diff --git a/src/Matrix.cc b/src/Matrix.cc index 19094af..f8c21ce 100755 --- a/src/Matrix.cc +++ b/src/Matrix.cc @@ -108,7 +108,9 @@ Matrix::Init(Handle target) { NODE_SET_PROTOTYPE_METHOD(constructor, "getPerspectiveTransform", GetPerspectiveTransform); NODE_SET_PROTOTYPE_METHOD(constructor, "warpPerspective", WarpPerspective); - NODE_SET_METHOD(constructor, "Eye", Eye); + NODE_SET_METHOD(constructor, "Zeros", Zeros); + NODE_SET_METHOD(constructor, "Ones", Ones); + NODE_SET_METHOD(constructor, "Eye", Eye); NODE_SET_PROTOTYPE_METHOD(constructor, "copyWithMask", CopyWithMask); NODE_SET_PROTOTYPE_METHOD(constructor, "setWithMask", SetWithMask); @@ -826,6 +828,37 @@ void AfterSaveAsync(uv_work_t *req) { delete baton; } +Handle +Matrix::Zeros(const v8::Arguments& args){ + HandleScope scope; + + int w = args[0]->Uint32Value(); + int h = args[1]->Uint32Value(); + int type = (args.Length() > 2) ? args[2]->IntegerValue() : CV_64FC1; + + Local im_h = Matrix::constructor->GetFunction()->NewInstance(); + Matrix *img = ObjectWrap::Unwrap(im_h); + cv::Mat mat = cv::Mat::zeros(w, h, type); + + img->mat = mat; + return scope.Close(im_h); +} + +Handle +Matrix::Ones(const v8::Arguments& args){ + HandleScope scope; + + int w = args[0]->Uint32Value(); + int h = args[1]->Uint32Value(); + int type = (args.Length() > 2) ? args[2]->IntegerValue() : CV_64FC1; + + Local im_h = Matrix::constructor->GetFunction()->NewInstance(); + Matrix *img = ObjectWrap::Unwrap(im_h); + cv::Mat mat = cv::Mat::ones(w, h, type); + + img->mat = mat; + return scope.Close(im_h); +} Handle Matrix::Eye(const v8::Arguments& args){ @@ -833,16 +866,16 @@ Matrix::Eye(const v8::Arguments& args){ int w = args[0]->Uint32Value(); int h = args[1]->Uint32Value(); + int type = (args.Length() > 2) ? args[2]->IntegerValue() : CV_64FC1; Local im_h = Matrix::constructor->GetFunction()->NewInstance(); Matrix *img = ObjectWrap::Unwrap(im_h); - cv::Mat mat = cv::Mat::eye(w, h, CV_64FC1); + cv::Mat mat = cv::Mat::eye(w, h, type); img->mat = mat; return scope.Close(im_h); } - Handle Matrix::ConvertGrayscale(const v8::Arguments& args) { HandleScope scope; diff --git a/src/Matrix.h b/src/Matrix.h index c24a3f9..791636b 100755 --- a/src/Matrix.h +++ b/src/Matrix.h @@ -14,6 +14,8 @@ class Matrix: public node::ObjectWrap { static double DblGet(cv::Mat mat, int i, int j); + JSFUNC(Zeros) // factory + JSFUNC(Ones) // factory JSFUNC(Eye) // factory JSFUNC(Get) // at