From 3efe469ea022b8dd234092dd025cc2115f1ce9d8 Mon Sep 17 00:00:00 2001 From: prabirshrestha Date: Mon, 3 Dec 2012 13:34:50 -0500 Subject: [PATCH 1/2] fixed require('buffers') --- lib/opencv.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/opencv.js b/lib/opencv.js index ccb94c7..0e635f6 100755 --- a/lib/opencv.js +++ b/lib/opencv.js @@ -1,5 +1,5 @@ var Stream = require('stream').Stream - , Buffers = require('buffer') + , Buffers = require('buffers') , util = require('util'); var bindings = require('./bindings') From 22bdf646b1d49642e984d13e62046793b75a3d2a Mon Sep 17 00:00:00 2001 From: Brandon Cheng Date: Sun, 27 Jan 2013 18:16:30 -0500 Subject: [PATCH 2/2] Add bindings for cv::inRange --- examples/color_filter.js | 12 ++++++++++++ src/Matrix.cc | 30 ++++++++++++++++++++++++++++++ src/Matrix.h | 2 ++ 3 files changed, 44 insertions(+) create mode 100644 examples/color_filter.js diff --git a/examples/color_filter.js b/examples/color_filter.js new file mode 100644 index 0000000..3cea2e5 --- /dev/null +++ b/examples/color_filter.js @@ -0,0 +1,12 @@ +var cv = require('../lib/opencv'); + +// (B)lue, (G)reen, (R)ed +var lower_threshold = [46, 57, 83]; +var upper_threshold = [80, 96, 115]; + +cv.readImage('./coin1.jpg', function(err, im) { + + im.inRange(lower_threshold, upper_threshold); + im.save('./coin_detected.jpg'); + +}); diff --git a/src/Matrix.cc b/src/Matrix.cc index 76f39cb..0eab50d 100755 --- a/src/Matrix.cc +++ b/src/Matrix.cc @@ -62,6 +62,8 @@ Matrix::Init(Handle target) { NODE_SET_PROTOTYPE_METHOD(constructor, "goodFeaturesToTrack", GoodFeaturesToTrack); NODE_SET_PROTOTYPE_METHOD(constructor, "houghLinesP", HoughLinesP); + NODE_SET_PROTOTYPE_METHOD(constructor, "inRange", inRange); + NODE_SET_METHOD(constructor, "Eye", Eye); @@ -795,3 +797,31 @@ Matrix::Resize(const v8::Arguments& args){ return scope.Close(Undefined()); } + + +Handle +Matrix::inRange(const v8::Arguments& args) { + HandleScope scope; + + Matrix *self = ObjectWrap::Unwrap(args.This()); + /*if(self->mat.channels() != 3) + return v8::ThrowException(String::New("Image is no 3-channel"));*/ + + if(args[0]->IsArray() && args[1]->IsArray()) { + Local args_lowerb = args[0]->ToObject(); + Local args_upperb = args[1]->ToObject(); + + cv::Scalar lowerb(0, 0, 0); + cv::Scalar upperb(0, 0, 0); + + lowerb = setColor(args_lowerb); + upperb = setColor(args_upperb); + + cv::Mat mask; + cv::inRange(self->mat, lowerb, upperb, mask); + mask.copyTo(self->mat); + } + + + return scope.Close(v8::Null()); +} diff --git a/src/Matrix.h b/src/Matrix.h index aa61fcc..44354f9 100755 --- a/src/Matrix.h +++ b/src/Matrix.h @@ -58,6 +58,8 @@ class Matrix: public node::ObjectWrap { JSFUNC(GoodFeaturesToTrack) JSFUNC(HoughLinesP) + JSFUNC(inRange) + /* static Handle Val(const Arguments& args); static Handle RowRange(const Arguments& args);