diff --git a/modules/matlab/CMakeLists.txt b/modules/matlab/CMakeLists.txt index 5c9d46da6b..48f995bd43 100644 --- a/modules/matlab/CMakeLists.txt +++ b/modules/matlab/CMakeLists.txt @@ -41,12 +41,13 @@ if (IOS OR ANDROID OR NOT MATLAB_FOUND OR NOT PYTHONLIBS_FOUND) endif() set(the_description "The Matlab/Octave bindings") -ocv_add_module(matlab BINDINGS #TODO: does it actually NEED to depend on core? +ocv_add_module(matlab BINDINGS OPTIONAL opencv_core opencv_imgproc opencv_ml opencv_highgui - opencv_objdetect #opencv_features2d TODO: Re-enable when Flann is in a compliant state - opencv_video opencv_photo - #opencv_calib opencv_calib3d + opencv_objdetect opencv_flann opencv_features2d + opencv_photo opencv_video opencv_videostab + opencv_calib opencv_calib3d + opencv_stitching opencv_superres opencv_nonfree ) diff --git a/modules/matlab/generator/parse_tree.py b/modules/matlab/generator/parse_tree.py index 18d11e5f99..c038994057 100644 --- a/modules/matlab/generator/parse_tree.py +++ b/modules/matlab/generator/parse_tree.py @@ -17,6 +17,8 @@ class ParseTree(object): constants = [] for defn in definitions: obj = babel.translate(defn) + if obj is None: + continue if type(obj) is Class or obj.clss: self.insertIntoClassTree(obj, class_tree) elif type(obj) is Function: @@ -54,7 +56,7 @@ class Translator(object): # --- operators! --- #TODO: implement operators: http://www.mathworks.com.au/help/matlab/matlab_oop/implementing-operators-for-your-class.html if 'operator' in defn[0]: - return self.translateFunction(defn) + return # --- constant --- elif convertibleToInt(defn[1]): return self.translateConstant(defn) diff --git a/modules/matlab/include/bridge.hpp b/modules/matlab/include/bridge.hpp index c62d3df9bc..f3c1510b3f 100644 --- a/modules/matlab/include/bridge.hpp +++ b/modules/matlab/include/bridge.hpp @@ -3,7 +3,9 @@ #include "mex.h" #include +#include #include +#include #include /* @@ -17,6 +19,10 @@ typedef std::vector vector_float; typedef std::vector vector_String; typedef std::vector vector_uchar; typedef std::vector vector_Rect; +typedef std::vector vector_KeyPoint; +typedef cv::Ptr Ptr_StereoBM; +typedef cv::Ptr Ptr_StereoSGBM; +typedef cv::Ptr Ptr_FeatureDetector; void conditionalError(bool expr, const std::string& str) { @@ -126,6 +132,21 @@ public: int toInt() { return 0; } operator int() { return toInt(); } + // --------------------------- Ptr_StereoBM -------------------------------------- + Bridge& operator=(const Ptr_StereoBM& obj) { return *this; } + Ptr_StereoBM toPtrStereoBM() { return Ptr_StereoBM(); } + operator Ptr_StereoBM() { return toPtrStereoBM(); } + + // --------------------------- Ptr_StereoSGBM -------------------------------------- + Bridge& operator=(const Ptr_StereoSGBM& obj) { return *this; } + Ptr_StereoSGBM toPtrStereoSGBM() { return Ptr_StereoSGBM(); } + operator Ptr_StereoSGBM() { return toPtrStereoSGBM(); } + + // --------------------------- Ptr_FeatureDetector -------------------------------------- + Bridge& operator=(const Ptr_FeatureDetector& obj) { return *this; } + Ptr_FeatureDetector toPtrFeatureDetector() { return Ptr_FeatureDetector(); } + operator Ptr_FeatureDetector() { return toPtrFeatureDetector(); } + // --------------------------- vector_int ---------------------------------- Bridge& operator=(const vector_int& obj) { return *this; } vector_int toVectorInt() { return vector_int(); } @@ -141,6 +162,11 @@ public: vector_Rect toVectorRect() { return vector_Rect(); } operator vector_Rect() { return toVectorRect(); } + // --------------------------- vector_KeyPoint ---------------------------------- + Bridge& operator=(const vector_KeyPoint& obj) { return *this; } + vector_KeyPoint toVectorKeyPoint() { return vector_KeyPoint(); } + operator vector_KeyPoint() { return toVectorKeyPoint(); } + // --------------------------- vector_String ---------------------------------- Bridge& operator=(const vector_String& obj) { return *this; } vector_String toVectorString() { return vector_String(); }