Added WITH_CLP flag support into cmake scripts.
authorAlexey Spizhevoy <no@email>
Wed, 11 Apr 2012 12:34:30 +0000 (12:34 +0000)
committerAlexey Spizhevoy <no@email>
Wed, 11 Apr 2012 12:34:30 +0000 (12:34 +0000)
CMakeLists.txt
cmake/templates/cvconfig.h.cmake
modules/videostab/include/opencv2/videostab/motion_stabilizing.hpp
modules/videostab/include/opencv2/videostab/optical_flow.hpp
modules/videostab/src/motion_stabilizing.cpp

index 1e7ce39..945bb73 100644 (file)
@@ -124,6 +124,7 @@ OCV_OPTION(WITH_V4L            "Include Video 4 Linux support"               ON
 OCV_OPTION(WITH_VIDEOINPUT     "Build HighGUI with DirectShow support"       ON   IF WIN32 )
 OCV_OPTION(WITH_XIMEA          "Include XIMEA cameras support"               OFF  IF WIN32 )
 OCV_OPTION(WITH_XINE           "Include Xine support (GPL)"                  OFF  IF (UNIX AND NOT APPLE AND NOT ANDROID AND NOT IOS) )
+OCV_OPTION(WITH_CLP            "Include Clp support (EPL)"                   OFF  IF (NOT ANDROID AND NOT IOS) )
 
 # OpenCV build components
 # ===================================================
@@ -527,6 +528,22 @@ if(WITH_EIGEN)
   endif()
 endif()
 
+########################## Clp #####################################
+set(HAVE_CLP FALSE)
+
+if(WITH_CLP)
+  find_path(CLP_INCLUDE_PATH "coin"
+            PATHS "/usr/local/include" "/usr/include" "/opt/include"
+            DOC "The path to Clp headers")
+  if(CLP_INCLUDE_PATH)
+    ocv_include_directories(${CLP_INCLUDE_PATH})
+    set(CLP_LIBRARY_DIR "${CLP_INCLUDE_PATH}/../lib" CACHE PATH "Full path of Clp library directory")
+    link_directories(${CLP_LIBRARY_DIR})
+    set(OPENCV_LINKER_LIBS ${OPENCV_LINKER_LIBS} Clp OsiClp CoinUtils)
+    set(HAVE_CLP TRUE)
+  endif()
+endif()
+
 ################## Extra HighGUI libs on Windows ###################
 if(WIN32)
   set(HIGHGUI_LIBRARIES ${HIGHGUI_LIBRARIES} comctl32 gdi32 ole32)
@@ -799,6 +816,7 @@ endif()
 status("    Use TBB:"   HAVE_TBB   THEN YES ELSE NO)
 status("    Use Cuda:"  HAVE_CUDA  THEN YES ELSE NO)
 status("    Use Eigen:" HAVE_EIGEN THEN YES ELSE NO)
+status("    Use Clp:"   HAVE_CLP   THEN YES ELSE NO)
 
 status("")
 status("  Python interpreter:"  PYTHON_EXECUTABLE        THEN "${PYTHON_EXECUTABLE} (ver ${PYTHON_VERSION_MAJOR_MINOR})" ELSE NO)
index 3c501ca..457dd4a 100644 (file)
 
 /* OpenGL support*/
 #cmakedefine HAVE_OPENGL
+
+/* Clp support */
+#cmakedefine HAVE_CLP
index d51f3a5..6d1522b 100644 (file)
@@ -46,6 +46,7 @@
 #include <vector>
 #include <utility>
 #include "opencv2/core/core.hpp"
+#include "opencv2/videostab/global_motion.hpp"
 
 namespace cv
 {
@@ -108,6 +109,22 @@ private:
     std::vector<float> weight_;
 };
 
+class CV_EXPORTS LpMotionStabilizer : public IMotionStabilizer
+{
+public:
+    LpMotionStabilizer(MotionModel model = LINEAR_SIMILARITY);
+
+    void setMotionModel(MotionModel val) { model_ = val; }
+    MotionModel motionModel() const { return model_; }
+
+    virtual void stabilize(
+            int size, const std::vector<Mat> &motions, std::pair<int,int> range,
+            Mat *stabilizationMotions) const;
+
+private:
+    MotionModel model_;
+};
+
 CV_EXPORTS Mat ensureInclusionConstraint(const Mat &M, Size size, float trimRatio);
 
 CV_EXPORTS float estimateOptimalTrimRatio(const Mat &M, Size size);
index 6aa82d5..c42b016 100644 (file)
@@ -47,7 +47,7 @@
 #include "opencv2/opencv_modules.hpp"
 
 #if HAVE_OPENCV_GPU
-#  include "opencv2/gpu/gpu.hpp"
+#include "opencv2/gpu/gpu.hpp"
 #endif
 
 namespace cv
index 169da99..6300f0a 100644 (file)
 #include "opencv2/videostab/global_motion.hpp"
 #include "opencv2/videostab/ring_buffer.hpp"
 
+#ifdef HAVE_CLP
+#include "coin/ClpSimplex.hpp"
+#endif
+
 using namespace std;
 
 namespace cv
@@ -254,5 +258,27 @@ float estimateOptimalTrimRatio(const Mat &M, Size size)
     return r;
 }
 
+
+LpMotionStabilizer::LpMotionStabilizer(MotionModel model)
+{
+    setMotionModel(model);
+}
+
+
+#ifndef HAVE_CLP
+void LpMotionStabilizer::stabilize(int, const vector<Mat>&, pair<int,int>, Mat*) const
+{
+    CV_Error(CV_StsError, "The library is built without Clp support");
+}
+#else
+void LpMotionStabilizer::stabilize(
+        int size, const vector<Mat> &motions, pair<int,int> range,
+        Mat *stabilizationMotions) const
+{
+    // TODO implement
+    CV_Error(CV_StsNotImplemented, "LpMotionStabilizer::stabilize");
+}
+#endif
+
 } // namespace videostab
 } // namespace cv