diff --git a/src/Matrix.cc b/src/Matrix.cc index ff8297f..144f4bc 100755 --- a/src/Matrix.cc +++ b/src/Matrix.cc @@ -28,6 +28,8 @@ Matrix::Init(Handle target) { NODE_SET_PROTOTYPE_METHOD(ctor, "get", Get); NODE_SET_PROTOTYPE_METHOD(ctor, "set", Set); NODE_SET_PROTOTYPE_METHOD(ctor, "put", Put); + NODE_SET_PROTOTYPE_METHOD(ctor, "normalize", Normalize); + NODE_SET_PROTOTYPE_METHOD(ctor, "getData", GetData); NODE_SET_PROTOTYPE_METHOD(ctor, "pixel", Pixel); NODE_SET_PROTOTYPE_METHOD(ctor, "width", Width); NODE_SET_PROTOTYPE_METHOD(ctor, "height", Height); @@ -287,6 +289,52 @@ NAN_METHOD(Matrix::Put){ NanReturnUndefined(); } + +// @author tualo +// getData getting node buffer of image data +NAN_METHOD(Matrix::GetData) { + NanScope(); + + Matrix *self = ObjectWrap::Unwrap(args.This()); + int size = self->mat.rows * self->mat.cols * self->mat.elemSize1(); + Local buf = NanNewBufferHandle(size); + uchar* data = (uchar*) Buffer::Data(buf); + memcpy(data, self->mat.data, size); + + v8::Local globalObj = NanGetCurrentContext()->Global(); + v8::Local bufferConstructor = v8::Local::Cast(globalObj->Get(NanNew("Buffer"))); + v8::Handle constructorArgs[3] = {buf, NanNew((unsigned) size), NanNew(0)}; + v8::Local actualBuffer = bufferConstructor->NewInstance(3, constructorArgs); + + NanReturnValue(actualBuffer); + +} + +// @author tualo +// normalize wrapper +NAN_METHOD(Matrix::Normalize) { + NanScope(); + + if (!args[0]->IsNumber()) + NanThrowTypeError("min is required (argument 1)"); + + if (!args[1]->IsNumber()) + NanThrowTypeError("max is required (argument 2)"); + + int min = args[0]->Uint32Value(); + int max = args[1]->Uint32Value(); + + Matrix *self = ObjectWrap::Unwrap(args.This()); + cv::Mat norm; + cv::normalize(self->mat, norm,min,max, cv::NORM_MINMAX); + + norm.copyTo(self->mat); + + NanReturnNull(); +} + + + NAN_METHOD(Matrix::Size){ SETUP_FUNCTION(Matrix) diff --git a/src/Matrix.h b/src/Matrix.h index 04cf1d6..37477e1 100755 --- a/src/Matrix.h +++ b/src/Matrix.h @@ -22,6 +22,9 @@ class Matrix: public node::ObjectWrap { JSFUNC(Set) JSFUNC(Put) + JSFUNC(GetData) + JSFUNC(Normalize) + JSFUNC(Row) JSFUNC(PixelRow) JSFUNC(Col)