Merge pull request #137 from jhludwig/mask-operations

copy, set, mean with mask operations
This commit is contained in:
Peter Braden 2014-06-16 09:33:40 +02:00
commit 8fd3f664c3
2 changed files with 58 additions and 0 deletions

View File

@ -107,6 +107,10 @@ Matrix::Init(Handle<Object> target) {
NODE_SET_METHOD(constructor, "Eye", Eye);
NODE_SET_PROTOTYPE_METHOD(constructor, "copyWithMask", CopyWithMask);
NODE_SET_PROTOTYPE_METHOD(constructor, "setWithMask", SetWithMask);
NODE_SET_PROTOTYPE_METHOD(constructor, "meanWithMask", MeanWithMask);
target->Set(String::NewSymbol("Matrix"), m->GetFunction());
};
@ -1825,3 +1829,53 @@ Matrix::WarpPerspective(const v8::Arguments& args) {
return scope.Close(v8::Null());
}
Handle<Value>
Matrix::CopyWithMask(const v8::Arguments& args) {
SETUP_FUNCTION(Matrix)
// param 0 - destination image:
Matrix *dest = ObjectWrap::Unwrap<Matrix>(args[0]->ToObject());
// param 1 - mask. same size as src and dest
Matrix *mask = ObjectWrap::Unwrap<Matrix>(args[1]->ToObject());
self->mat.copyTo(dest->mat,mask->mat);
return scope.Close(Undefined());
}
Handle<Value>
Matrix::SetWithMask(const v8::Arguments& args) {
SETUP_FUNCTION(Matrix)
// param 0 - target value:
Local<Object> valArray = args[0]->ToObject();
cv::Scalar newvals;
newvals.val[0] = valArray->Get(0)->NumberValue();
newvals.val[1] = valArray->Get(1)->NumberValue();
newvals.val[2] = valArray->Get(2)->NumberValue();
// param 1 - mask. same size as src and dest
Matrix *mask = ObjectWrap::Unwrap<Matrix>(args[1]->ToObject());
self->mat.setTo(newvals,mask->mat);
return scope.Close(Undefined());
}
Handle<Value>
Matrix::MeanWithMask(const v8::Arguments& args) {
SETUP_FUNCTION(Matrix)
// param 0 - mask. same size as src and dest
Matrix *mask = ObjectWrap::Unwrap<Matrix>(args[0]->ToObject());
cv::Scalar means = cv::mean(self->mat, mask->mat);
v8::Local<v8::Array> arr = v8::Array::New(3);
arr->Set(0, Number::New( means[0] ));
arr->Set(1, Number::New( means[1] ));
arr->Set(2, Number::New( means[2] ));
return scope.Close(arr);
}

View File

@ -97,6 +97,10 @@ class Matrix: public node::ObjectWrap {
JSFUNC(PutText)
JSFUNC(GetPerspectiveTransform)
JSFUNC(WarpPerspective)
JSFUNC(CopyWithMask)
JSFUNC(SetWithMask)
JSFUNC(MeanWithMask)
/*
static Handle<Value> Val(const Arguments& args);
static Handle<Value> RowRange(const Arguments& args);