mirror of
https://github.com/peterbraden/node-opencv.git
synced 2025-12-08 19:45:55 +00:00
Merge pull request #137 from jhludwig/mask-operations
copy, set, mean with mask operations
This commit is contained in:
commit
8fd3f664c3
@ -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);
|
||||
}
|
||||
|
||||
@ -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);
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user