From e3280ddc1eb9ca29329505a6e7b095fb4302be7f Mon Sep 17 00:00:00 2001 From: Jean-Tiare LE BIGOT Date: Sun, 20 Jan 2013 14:16:16 +0100 Subject: [PATCH] add bindings for approxPolyDP in contours --- src/Contours.cc | 18 ++++++++++++++++++ src/Contours.h | 1 + 2 files changed, 19 insertions(+) diff --git a/src/Contours.cc b/src/Contours.cc index 018a1e0..f687625 100755 --- a/src/Contours.cc +++ b/src/Contours.cc @@ -26,6 +26,7 @@ Contour::Init(Handle target) { NODE_SET_PROTOTYPE_METHOD(constructor, "size", Size); NODE_SET_PROTOTYPE_METHOD(constructor, "area", Area); NODE_SET_PROTOTYPE_METHOD(constructor, "arcLength", ArcLength); + NODE_SET_PROTOTYPE_METHOD(constructor, "approxPolyDP", ApproxPolyDP); target->Set(String::NewSymbol("Contours"), m->GetFunction()); }; @@ -81,3 +82,20 @@ Contour::ArcLength(const Arguments &args) { return scope.Close(Number::New(arcLength(cv::Mat(self->contours[pos]), isClosed))); } + + +Handle +Contour::ApproxPolyDP(const Arguments &args) { + HandleScope scope; + + Contour *self = ObjectWrap::Unwrap(args.This()); + int pos = args[0]->NumberValue(); + bool epsilon = args[1]->NumberValue(); + bool isClosed = args[2]->BooleanValue(); + + cv::Mat approxed; + approxPolyDP(cv::Mat(self->contours[pos]), approxed, epsilon, isClosed); + approxed.copyTo(self->contours[pos]); + + return scope.Close(v8::Null()); +} diff --git a/src/Contours.h b/src/Contours.h index 9cb3f4c..e832d03 100755 --- a/src/Contours.h +++ b/src/Contours.h @@ -17,5 +17,6 @@ class Contour: public node::ObjectWrap { static Handle Size(const v8::Arguments&); static Handle Area(const v8::Arguments&); static Handle ArcLength(const v8::Arguments&); + static Handle ApproxPolyDP(const v8::Arguments&); };