From d60e3d11d51e5ef4efbda3bc8916dbfcb465d5a3 Mon Sep 17 00:00:00 2001 From: Tim Park Date: Mon, 29 Jul 2013 12:54:38 -0700 Subject: [PATCH] add countNonZero to Matrix operations --- src/Matrix.cc | 11 +++++++++++ src/Matrix.h | 1 + test/unit.js | 9 +++++++++ 3 files changed, 21 insertions(+) diff --git a/src/Matrix.cc b/src/Matrix.cc index b93c671..8cbc363 100755 --- a/src/Matrix.cc +++ b/src/Matrix.cc @@ -61,6 +61,7 @@ Matrix::Init(Handle target) { 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); @@ -816,6 +817,16 @@ Matrix::BitwiseXor(const v8::Arguments& args) { return scope.Close(v8::Null()); } +Handle +Matrix::CountNonZero(const v8::Arguments& args) { + HandleScope scope; + + Matrix *self = ObjectWrap::Unwrap(args.This()); + + double count = (double)cv::countNonZero(self->mat); + return scope.Close(v8::Number::New(count)); +} + Handle Matrix::Split(const v8::Arguments& args) { HandleScope scope; diff --git a/src/Matrix.h b/src/Matrix.h index 5197001..3dcb691 100755 --- a/src/Matrix.h +++ b/src/Matrix.h @@ -56,6 +56,7 @@ class Matrix: public node::ObjectWrap { JSFUNC(AbsDiff) JSFUNC(AddWeighted) JSFUNC(BitwiseXor) + JSFUNC(CountNonZero) JSFUNC(Split) JSFUNC(Canny) JSFUNC(Dilate) diff --git a/test/unit.js b/test/unit.js index d008508..863750c 100755 --- a/test/unit.js +++ b/test/unit.js @@ -216,6 +216,15 @@ vows.describe('Smoke Tests OpenCV').addBatch({ assert.equal(xored.get(0,0), 0); } + , ".countNonZero": function(cv) { + cv.readImage("./examples/mona.png", function(err, im) { + assert.ok(im); + + im.convertGrayscale(); + assert.equal(im.countNonZero(), 378000); + }); + } + }