diff --git a/modules/videostab/CMakeLists.txt b/modules/videostab/CMakeLists.txt index 912c00dde6..56dbae2c73 100644 --- a/modules/videostab/CMakeLists.txt +++ b/modules/videostab/CMakeLists.txt @@ -1,3 +1,3 @@ set(the_description "Video stabilization") -ocv_define_module(videostab opencv_imgproc opencv_features2d opencv_video OPTIONAL opencv_gpu) +ocv_define_module(videostab opencv_imgproc opencv_features2d opencv_video opencv_highgui OPTIONAL opencv_gpu) diff --git a/modules/videostab/include/opencv2/videostab/fast_marching.hpp b/modules/videostab/include/opencv2/videostab/fast_marching.hpp index c1b841f0b7..b8c1222dc2 100644 --- a/modules/videostab/include/opencv2/videostab/fast_marching.hpp +++ b/modules/videostab/include/opencv2/videostab/fast_marching.hpp @@ -72,7 +72,7 @@ private: float dist; int x, y; - DXY() {} + DXY() : dist(0), x(0), y(0) {} DXY(float dist, int x, int y) : dist(dist), x(x), y(y) {} bool operator <(const DXY &dxy) const { return dist < dxy.dist; } }; diff --git a/modules/videostab/include/opencv2/videostab/optical_flow.hpp b/modules/videostab/include/opencv2/videostab/optical_flow.hpp index 2e557196f2..4da2fe7ee3 100644 --- a/modules/videostab/include/opencv2/videostab/optical_flow.hpp +++ b/modules/videostab/include/opencv2/videostab/optical_flow.hpp @@ -44,7 +44,11 @@ #define __OPENCV_VIDEOSTAB_OPTICAL_FLOW_HPP__ #include "opencv2/core/core.hpp" -#include "opencv2/gpu/gpu.hpp" +#include "opencv2/opencv_modules.hpp" + +#if HAVE_OPENCV_GPU +# include "opencv2/gpu/gpu.hpp" +#endif namespace cv { @@ -94,6 +98,7 @@ public: OutputArray status, OutputArray errors); }; +#if HAVE_OPENCV_GPU class DensePyrLkOptFlowEstimatorGpu : public PyrLkOptFlowEstimatorBase, public IDenseOptFlowEstimator { @@ -107,6 +112,7 @@ private: gpu::PyrLKOpticalFlow optFlowEstimator_; gpu::GpuMat frame0_, frame1_, flowX_, flowY_, errors_; }; +#endif } // namespace videostab } // namespace cv diff --git a/modules/videostab/src/inpainting.cpp b/modules/videostab/src/inpainting.cpp index 8486cf4eee..9b6a500fd2 100644 --- a/modules/videostab/src/inpainting.cpp +++ b/modules/videostab/src/inpainting.cpp @@ -246,7 +246,11 @@ public: MotionInpainter::MotionInpainter() { +#if HAVE_OPENCV_GPU setOptFlowEstimator(new DensePyrLkOptFlowEstimatorGpu()); +#else + CV_Error( CV_StsNotImplemented, "Current implementation of MotionInpainter requires GPU" ); +#endif setFlowErrorThreshold(1e-4f); setBorderMode(BORDER_REPLICATE); } diff --git a/modules/videostab/src/optical_flow.cpp b/modules/videostab/src/optical_flow.cpp index ef360cc954..083c0e0b57 100644 --- a/modules/videostab/src/optical_flow.cpp +++ b/modules/videostab/src/optical_flow.cpp @@ -41,7 +41,6 @@ //M*/ #include "precomp.hpp" -#include "opencv2/gpu/gpu.hpp" #include "opencv2/video/video.hpp" #include "opencv2/videostab/optical_flow.hpp" @@ -60,6 +59,7 @@ void SparsePyrLkOptFlowEstimator::run( } +#if HAVE_OPENCV_GPU DensePyrLkOptFlowEstimatorGpu::DensePyrLkOptFlowEstimatorGpu() { CV_Assert(gpu::getCudaEnabledDeviceCount() > 0); @@ -86,6 +86,7 @@ void DensePyrLkOptFlowEstimatorGpu::run( flowX_.download(flowX.getMatRef()); flowY_.download(flowY.getMatRef()); } +#endif } // namespace videostab