diff --git a/src/Calib3D.h b/src/Calib3D.h index 4f06505..79b4f30 100644 --- a/src/Calib3D.h +++ b/src/Calib3D.h @@ -3,6 +3,8 @@ #include "OpenCV.h" +#include + // Implementation of calib3d.hpp functions class Calib3D: public node::ObjectWrap { diff --git a/src/CamShift.cc b/src/CamShift.cc index 788a1a4..27b5c6a 100644 --- a/src/CamShift.cc +++ b/src/CamShift.cc @@ -2,6 +2,7 @@ #include "OpenCV.h" #include "Matrix.h" +#include #define CHANNEL_HUE 0 #define CHANNEL_SATURATION 1 diff --git a/src/CascadeClassifierWrap.cc b/src/CascadeClassifierWrap.cc index 2398103..c8b27d4 100755 --- a/src/CascadeClassifierWrap.cc +++ b/src/CascadeClassifierWrap.cc @@ -4,6 +4,11 @@ #include +#include +#include +#include + + Persistent CascadeClassifierWrap::constructor; void diff --git a/src/CascadeClassifierWrap.h b/src/CascadeClassifierWrap.h index 36972d9..a91faa9 100755 --- a/src/CascadeClassifierWrap.h +++ b/src/CascadeClassifierWrap.h @@ -1,4 +1,5 @@ #include "OpenCV.h" +#include class CascadeClassifierWrap: public node::ObjectWrap { public: diff --git a/src/Contours.cc b/src/Contours.cc index fe59d68..dc0efe9 100755 --- a/src/Contours.cc +++ b/src/Contours.cc @@ -4,6 +4,8 @@ #include +#include + v8::Persistent Contour::constructor; diff --git a/src/Matrix.cc b/src/Matrix.cc index 06ff203..1f696d8 100755 --- a/src/Matrix.cc +++ b/src/Matrix.cc @@ -3,6 +3,11 @@ #include "OpenCV.h" #include +#include +#include +#include +#include + v8::Persistent Matrix::constructor; cv::Scalar setColor(Local objColor); diff --git a/src/OpenCV.cc b/src/OpenCV.cc index 6ebdf01..264ff77 100755 --- a/src/OpenCV.cc +++ b/src/OpenCV.cc @@ -2,6 +2,10 @@ #include "Matrix.h" #include +#include +#include +#include + void OpenCV::Init(Handle target) { NanScope(); diff --git a/src/OpenCV.h b/src/OpenCV.h index 2dc32e5..fa6c267 100755 --- a/src/OpenCV.h +++ b/src/OpenCV.h @@ -7,7 +7,9 @@ #include #include #include -#include +#include +#include +#include #include #include diff --git a/src/Stereo.cc b/src/Stereo.cc index 54da7af..051a6d9 100644 --- a/src/Stereo.cc +++ b/src/Stereo.cc @@ -1,6 +1,7 @@ #include "Stereo.h" #include "Matrix.h" -#include +//#include +#include // Block matching @@ -17,9 +18,9 @@ StereoBM::Init(Handle target) { NODE_SET_PROTOTYPE_METHOD(ctor, "compute", Compute); - ctor->Set(NanNew("BASIC_PRESET"), NanNew((int)cv::StereoBM::BASIC_PRESET)); - ctor->Set(NanNew("FISH_EYE_PRESET"), NanNew((int)cv::StereoBM::FISH_EYE_PRESET)); - ctor->Set(NanNew("NARROW_PRESET"), NanNew((int)cv::StereoBM::NARROW_PRESET)); + ctor->Set(NanNew("BASIC_PRESET"), NanNew((int)0)); + ctor->Set(NanNew("FISH_EYE_PRESET"), NanNew((int)1)); + ctor->Set(NanNew("NARROW_PRESET"), NanNew((int)2)); target->Set(NanNew("StereoBM"), ctor->GetFunction()); } @@ -30,7 +31,7 @@ NAN_METHOD(StereoBM::New) { if (args.This()->InternalFieldCount() == 0) NanThrowTypeError("Cannot instantiate without new"); - StereoBM *stereo; + StereoBM *stereo=0; if (args.Length() == 0) { @@ -38,25 +39,21 @@ NAN_METHOD(StereoBM::New) { } else if (args.Length() == 1) { - stereo = new StereoBM(args[0]->IntegerValue()); // preset + stereo = new StereoBM(args[0]->IntegerValue()); // disparity search range } else if (args.Length() == 2) { - stereo = new StereoBM(args[0]->IntegerValue(), args[1]->IntegerValue()); // preset, disparity search range - } - else - { - stereo = new StereoBM(args[0]->IntegerValue(), args[1]->IntegerValue(), args[2]->IntegerValue()); // preset, disparity search range, sum of absolute differences window size + stereo = new StereoBM(args[0]->IntegerValue(), args[1]->IntegerValue()); // disparity search range, sum of absolute differences window size } stereo->Wrap(args.Holder()); NanReturnValue(args.Holder()); } -StereoBM::StereoBM(int preset, int ndisparities, int SADWindowSize) - : ObjectWrap(), stereo(preset, ndisparities, SADWindowSize) +StereoBM::StereoBM( int ndisparities, int SADWindowSize) + : ObjectWrap() { - + stereo = cv::StereoBM::create(ndisparities, SADWindowSize); } // TODO make this async @@ -83,8 +80,8 @@ NAN_METHOD(StereoBM::Compute) } // Compute stereo using the block matching algorithm - cv::Mat disparity; - self->stereo(left, right, disparity, type); + cv::Mat disparity(left.size(), type); + self->stereo->compute(left, right, disparity); // Wrap the returned disparity map Local disparityWrap = NanNew(Matrix::constructor)->GetFunction()->NewInstance(); @@ -187,15 +184,15 @@ NAN_METHOD(StereoSGBM::New) { } StereoSGBM::StereoSGBM() - : ObjectWrap(), stereo() + : ObjectWrap() { - + stereo = cv::StereoSGBM::create(0,64,11); } StereoSGBM::StereoSGBM(int minDisparity, int ndisparities, int SADWindowSize, int p1, int p2, int disp12MaxDiff, int preFilterCap, int uniquenessRatio, int speckleWindowSize, int speckleRange, bool fullDP) - : ObjectWrap(), stereo(minDisparity, ndisparities, SADWindowSize, p1, p2, disp12MaxDiff, preFilterCap, uniquenessRatio, speckleWindowSize, speckleRange, fullDP) + : ObjectWrap() { - + stereo = cv::StereoSGBM::create(minDisparity, ndisparities, SADWindowSize, p1, p2, disp12MaxDiff, preFilterCap, uniquenessRatio, speckleWindowSize, speckleRange, fullDP); } // TODO make this async @@ -216,7 +213,7 @@ NAN_METHOD(StereoSGBM::Compute) // Compute stereo using the block matching algorithm cv::Mat disparity; - self->stereo(left, right, disparity); + self->stereo->compute(left, right, disparity); // Wrap the returned disparity map Local disparityWrap = NanNew(Matrix::constructor)->GetFunction()->NewInstance(); @@ -232,7 +229,7 @@ NAN_METHOD(StereoSGBM::Compute) } }; - +#if 0 // Graph cut v8::Persistent StereoGC::constructor; @@ -321,3 +318,4 @@ NAN_METHOD(StereoGC::Compute) } }; +#endif diff --git a/src/Stereo.h b/src/Stereo.h index 569a6d6..32637b0 100644 --- a/src/Stereo.h +++ b/src/Stereo.h @@ -2,23 +2,24 @@ #define __NODE_STEREO_H #include "OpenCV.h" +#include class StereoBM: public node::ObjectWrap { public: - cv::StereoBM stereo; + cv::Ptr stereo; static Persistent constructor; static void Init(Handle target); static NAN_METHOD(New); - StereoBM(int preset = cv::StereoBM::BASIC_PRESET, int ndisparities = 0, int SADWindowSize=21); + StereoBM( int ndisparities = 0, int blockSize=21); JSFUNC(Compute); }; class StereoSGBM: public node::ObjectWrap { public: - cv::StereoSGBM stereo; + cv::Ptr stereo; static Persistent constructor; static void Init(Handle target); @@ -39,7 +40,7 @@ public: JSFUNC(Compute); }; - +#if 0 struct CvStereoGCState; class StereoGC: public node::ObjectWrap { @@ -54,5 +55,5 @@ public: JSFUNC(Compute); }; - +#endif #endif diff --git a/src/init.cc b/src/init.cc index 8d9171e..95f2fb8 100755 --- a/src/init.cc +++ b/src/init.cc @@ -31,7 +31,7 @@ init(Handle target) { ImgProc::Init(target); StereoBM::Init(target); StereoSGBM::Init(target); - StereoGC::Init(target); + //StereoGC::Init(target); #if CV_MAJOR_VERSION >= 2 && CV_MINOR_VERSION >=4