From a347ab682e690eed5488080581a1014c58d640ab Mon Sep 17 00:00:00 2001 From: Peter Braden Date: Sat, 6 Apr 2013 18:34:08 -0700 Subject: [PATCH] add adjustROI --- examples/take-face-pics.js | 29 +++++++++++++++++++++++++++++ src/HighGUI.cc | 3 ++- src/Matrix.cc | 34 ++++++++++++++++++++++++++++++++++ src/Matrix.h | 4 ++-- 4 files changed, 67 insertions(+), 3 deletions(-) create mode 100644 examples/take-face-pics.js diff --git a/examples/take-face-pics.js b/examples/take-face-pics.js new file mode 100644 index 0000000..616a02d --- /dev/null +++ b/examples/take-face-pics.js @@ -0,0 +1,29 @@ +var cv = require('../lib/opencv') + +var vid = new cv.VideoCapture(0) + + +var snap = function(){ + vid.read(function(im){ + im.detectObject(cv.FACE_CASCADE, {}, function(err, faces){ + if (!faces){ + console.log("No Faces") + return; + } + var face = faces[0] + , ims = im.size() + + im.adjustROI( + -face.y + , (face.y + face.height) - ims[0] + , -face.x + , (face.x + face.width) - ims[1]) + + console.log("!!", im.locateROI()); + var im2 = im.clone() + }) + + + }); +} +snap() diff --git a/src/HighGUI.cc b/src/HighGUI.cc index c793123..942acc6 100644 --- a/src/HighGUI.cc +++ b/src/HighGUI.cc @@ -70,7 +70,8 @@ NamedWindow::Destroy(const v8::Arguments& args){ Handle NamedWindow::BlockingWaitKey(const v8::Arguments& args){ - SETUP_FUNCTION(NamedWindow) + HandleScope scope; + //SETUP_FUNCTION(NamedWindow) int time = 0; if (args.Length() > 0){ time = args[1]->IntegerValue(); diff --git a/src/Matrix.cc b/src/Matrix.cc index e9ee76b..ee0f40a 100755 --- a/src/Matrix.cc +++ b/src/Matrix.cc @@ -68,6 +68,8 @@ Matrix::Init(Handle target) { NODE_SET_PROTOTYPE_METHOD(constructor, "houghLinesP", HoughLinesP); NODE_SET_PROTOTYPE_METHOD(constructor, "inRange", inRange); + NODE_SET_PROTOTYPE_METHOD(constructor, "adjustROI", AdjustROI); + NODE_SET_PROTOTYPE_METHOD(constructor, "locateROI", LocateROI); NODE_SET_METHOD(constructor, "Eye", Eye); @@ -901,3 +903,35 @@ Matrix::inRange(const v8::Arguments& args) { return scope.Close(v8::Null()); } + +Handle +Matrix::AdjustROI(const v8::Arguments& args) { + SETUP_FUNCTION(Matrix) + int dtop = args[0]->Uint32Value(); + int dbottom = args[1]->Uint32Value(); + int dleft = args[2]->Uint32Value(); + int dright = args[3]->Uint32Value(); + + self->mat.adjustROI(dtop, dbottom, dleft, dright); + + return scope.Close(v8::Null()); + +} + +Handle +Matrix::LocateROI(const v8::Arguments& args) { + SETUP_FUNCTION(Matrix) + + cv::Size wholeSize; + cv::Point ofs; + + self->mat.locateROI(wholeSize, ofs); + + v8::Local arr = v8::Array::New(4); + arr->Set(0, Number::New(wholeSize.width)); + arr->Set(1, Number::New(wholeSize.height)); + arr->Set(2, Number::New(ofs.x)); + arr->Set(3, Number::New(ofs.y)); + + return scope.Close(arr); +} diff --git a/src/Matrix.h b/src/Matrix.h index cd3184e..d4014fd 100755 --- a/src/Matrix.h +++ b/src/Matrix.h @@ -65,6 +65,8 @@ class Matrix: public node::ObjectWrap { JSFUNC(inRange) + JSFUNC(LocateROI) + JSFUNC(AdjustROI) /* static Handle Val(const Arguments& args); static Handle RowRange(const Arguments& args); @@ -86,8 +88,6 @@ class Matrix: public node::ObjectWrap { // create, increment, release static Handle PushBack(const Arguments& args); static Handle PopBack(const Arguments& args); - static Handle LocateROI(const Arguments& args); - static Handle AdjustROI(const Arguments& args); static Handle Total(const Arguments& args); static Handle IsContinous(const Arguments& args); static Handle Type(const Arguments& args);