mirror of
https://github.com/peterbraden/node-opencv.git
synced 2025-12-08 19:45:55 +00:00
Merge pull request #63 from timfpark/master
Add absDiff, bitwiseXor, and countNonZero to Matrix operations
This commit is contained in:
commit
276e42bffc
@ -58,7 +58,10 @@ Matrix::Init(Handle<Object> target) {
|
||||
NODE_SET_PROTOTYPE_METHOD(constructor, "flip", Flip);
|
||||
NODE_SET_PROTOTYPE_METHOD(constructor, "roi", ROI);
|
||||
NODE_SET_PROTOTYPE_METHOD(constructor, "ptr", Ptr);
|
||||
NODE_SET_PROTOTYPE_METHOD(constructor, "absDiff", AbsDiff);
|
||||
NODE_SET_PROTOTYPE_METHOD(constructor, "addWeighted", AddWeighted);
|
||||
NODE_SET_PROTOTYPE_METHOD(constructor, "bitwiseXor", BitwiseXor);
|
||||
NODE_SET_PROTOTYPE_METHOD(constructor, "countNonZero", CountNonZero);
|
||||
NODE_SET_PROTOTYPE_METHOD(constructor, "split", Split);
|
||||
NODE_SET_PROTOTYPE_METHOD(constructor, "canny", Canny);
|
||||
NODE_SET_PROTOTYPE_METHOD(constructor, "dilate", Dilate);
|
||||
@ -767,6 +770,20 @@ Matrix::Ptr(const v8::Arguments& args) {
|
||||
// return Undefined();
|
||||
}
|
||||
|
||||
Handle<Value>
|
||||
Matrix::AbsDiff(const v8::Arguments& args) {
|
||||
HandleScope scope;
|
||||
|
||||
Matrix *self = ObjectWrap::Unwrap<Matrix>(args.This());
|
||||
|
||||
Matrix *src1 = ObjectWrap::Unwrap<Matrix>(args[0]->ToObject());
|
||||
Matrix *src2 = ObjectWrap::Unwrap<Matrix>(args[1]->ToObject());
|
||||
|
||||
cv::absdiff(src1->mat, src2->mat, self->mat);
|
||||
|
||||
return scope.Close(v8::Null());
|
||||
}
|
||||
|
||||
Handle<Value>
|
||||
Matrix::AddWeighted(const v8::Arguments& args) {
|
||||
HandleScope scope;
|
||||
@ -786,6 +803,29 @@ Matrix::AddWeighted(const v8::Arguments& args) {
|
||||
return scope.Close(v8::Null());
|
||||
}
|
||||
|
||||
Handle<Value>
|
||||
Matrix::BitwiseXor(const v8::Arguments& args) {
|
||||
HandleScope scope;
|
||||
|
||||
Matrix *self = ObjectWrap::Unwrap<Matrix>(args.This());
|
||||
|
||||
Matrix *src1 = ObjectWrap::Unwrap<Matrix>(args[0]->ToObject());
|
||||
Matrix *src2 = ObjectWrap::Unwrap<Matrix>(args[1]->ToObject());
|
||||
|
||||
cv::bitwise_xor(src1->mat, src2->mat, self->mat);
|
||||
|
||||
return scope.Close(v8::Null());
|
||||
}
|
||||
|
||||
Handle<Value>
|
||||
Matrix::CountNonZero(const v8::Arguments& args) {
|
||||
HandleScope scope;
|
||||
|
||||
Matrix *self = ObjectWrap::Unwrap<Matrix>(args.This());
|
||||
|
||||
double count = (double)cv::countNonZero(self->mat);
|
||||
return scope.Close(v8::Number::New(count));
|
||||
}
|
||||
|
||||
Handle<Value>
|
||||
Matrix::Split(const v8::Arguments& args) {
|
||||
|
||||
@ -53,7 +53,10 @@ class Matrix: public node::ObjectWrap {
|
||||
JSFUNC(Flip)
|
||||
JSFUNC(ROI)
|
||||
JSFUNC(Ptr)
|
||||
JSFUNC(AbsDiff)
|
||||
JSFUNC(AddWeighted)
|
||||
JSFUNC(BitwiseXor)
|
||||
JSFUNC(CountNonZero)
|
||||
JSFUNC(Split)
|
||||
JSFUNC(Canny)
|
||||
JSFUNC(Dilate)
|
||||
|
||||
29
test/unit.js
29
test/unit.js
@ -190,7 +190,34 @@ vows.describe('Smoke Tests OpenCV').addBatch({
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
, ".absDiff and .countNonZero" : function(cv) {
|
||||
cv.readImage("./examples/mona.png", function(err, im) {
|
||||
cv.readImage("./examples/mona.png", function(err, im2){
|
||||
assert.ok(im);
|
||||
assert.ok(im2);
|
||||
|
||||
var diff = new cv.Matrix(im.width(), im.height());
|
||||
diff.absDiff(im, im2);
|
||||
|
||||
diff.convertGrayscale();
|
||||
assert.equal(diff.countNonZero(), 0);
|
||||
});
|
||||
});
|
||||
}
|
||||
|
||||
, ".bitwiseXor" : function(cv) {
|
||||
var mat1 = new cv.Matrix(1,1);
|
||||
mat1.set(0,0, 1);
|
||||
|
||||
var mat2 = new cv.Matrix(1,1);
|
||||
mat2.set(0,0, 1);
|
||||
|
||||
var xored = new cv.Matrix(1,1);
|
||||
xored.bitwiseXor(mat1, mat2);
|
||||
|
||||
assert.equal(xored.get(0,0), 0);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user