Commit 13d087e6 authored by Vladislav Vinogradov's avatar Vladislav Vinogradov

videostab module fixes

parent fdeec689
set(the_description "Video stabilization")
ocv_define_module(videostab opencv_imgproc opencv_features2d opencv_video opencv_photo opencv_calib3d OPTIONAL opencv_gpu opencv_highgui)
ocv_define_module(videostab opencv_imgproc opencv_features2d opencv_video opencv_photo opencv_calib3d
OPTIONAL opencv_gpu opencv_gpuwarping opencv_gpuoptflow opencv_highgui)
......@@ -52,8 +52,8 @@
#include "opencv2/videostab/motion_core.hpp"
#include "opencv2/videostab/outlier_rejection.hpp"
#ifdef HAVE_OPENCV_GPU
#include "opencv2/gpu.hpp"
#ifdef HAVE_OPENCV_GPUIMGPROC
# include "opencv2/gpuimgproc.hpp"
#endif
namespace cv
......@@ -199,7 +199,8 @@ private:
std::vector<Point2f> pointsPrevGood_, pointsGood_;
};
#ifdef HAVE_OPENCV_GPU
#if defined(HAVE_OPENCV_GPUIMGPROC) && defined(HAVE_OPENCV_GPU) && defined(HAVE_OPENCV_GPUOPTFLOW)
class CV_EXPORTS KeypointBasedMotionEstimatorGpu : public ImageMotionEstimatorBase
{
public:
......@@ -228,7 +229,8 @@ private:
std::vector<Point2f> hostPointsPrevTmp_, hostPointsTmp_;
std::vector<uchar> rejectionStatus_;
};
#endif
#endif // defined(HAVE_OPENCV_GPUIMGPROC) && defined(HAVE_OPENCV_GPU) && defined(HAVE_OPENCV_GPUOPTFLOW)
CV_EXPORTS Mat getMotion(int from, int to, const std::vector<Mat> &motions);
......
......@@ -46,8 +46,8 @@
#include "opencv2/core.hpp"
#include "opencv2/opencv_modules.hpp"
#ifdef HAVE_OPENCV_GPU
#include "opencv2/gpu.hpp"
#ifdef HAVE_OPENCV_GPUOPTFLOW
#include "opencv2/gpuoptflow.hpp"
#endif
namespace cv
......@@ -99,7 +99,8 @@ public:
OutputArray status, OutputArray errors);
};
#ifdef HAVE_OPENCV_GPU
#ifdef HAVE_OPENCV_GPUOPTFLOW
class CV_EXPORTS SparsePyrLkOptFlowEstimatorGpu
: public PyrLkOptFlowEstimatorBase, public ISparseOptFlowEstimator
{
......@@ -135,6 +136,7 @@ private:
gpu::PyrLKOpticalFlow optFlowEstimator_;
gpu::GpuMat frame0_, frame1_, flowX_, flowY_, errors_;
};
#endif
} // namespace videostab
......
......@@ -45,13 +45,10 @@
#include <vector>
#include "opencv2/core.hpp"
#include "opencv2/core/gpumat.hpp"
#include "opencv2/videostab/global_motion.hpp"
#include "opencv2/videostab/log.hpp"
#ifdef HAVE_OPENCV_GPU
#include "opencv2/gpu.hpp"
#endif
namespace cv
{
namespace videostab
......
......@@ -47,6 +47,10 @@
#include "opencv2/opencv_modules.hpp"
#include "clp.hpp"
#ifdef HAVE_OPENCV_GPU
# include "opencv2/gpu.hpp"
#endif
namespace cv
{
namespace videostab
......@@ -728,7 +732,8 @@ Mat KeypointBasedMotionEstimator::estimate(const Mat &frame0, const Mat &frame1,
}
#ifdef HAVE_OPENCV_GPU
#if defined(HAVE_OPENCV_GPUIMGPROC) && defined(HAVE_OPENCV_GPU) && defined(HAVE_OPENCV_GPUOPTFLOW)
KeypointBasedMotionEstimatorGpu::KeypointBasedMotionEstimatorGpu(Ptr<MotionEstimatorBase> estimator)
: ImageMotionEstimatorBase(estimator->motionModel()), motionEstimator_(estimator)
{
......@@ -799,7 +804,8 @@ Mat KeypointBasedMotionEstimatorGpu::estimate(const gpu::GpuMat &frame0, const g
// estimate motion
return motionEstimator_->estimate(hostPointsPrev_, hostPoints_, ok);
}
#endif // HAVE_OPENCV_GPU
#endif // defined(HAVE_OPENCV_GPUIMGPROC) && defined(HAVE_OPENCV_GPU) && defined(HAVE_OPENCV_GPUOPTFLOW)
Mat getMotion(int from, int to, const std::vector<Mat> &motions)
......
......@@ -323,7 +323,7 @@ public:
MotionInpainter::MotionInpainter()
{
#ifdef HAVE_OPENCV_GPU
#ifdef HAVE_OPENCV_GPUOPTFLOW
setOptFlowEstimator(new DensePyrLkOptFlowEstimatorGpu());
#else
CV_Error(Error::StsNotImplemented, "Current implementation of MotionInpainter requires GPU");
......
......@@ -58,7 +58,8 @@ void SparsePyrLkOptFlowEstimator::run(
}
#ifdef HAVE_OPENCV_GPU
#ifdef HAVE_OPENCV_GPUOPTFLOW
SparsePyrLkOptFlowEstimatorGpu::SparsePyrLkOptFlowEstimatorGpu()
{
CV_Assert(gpu::getCudaEnabledDeviceCount() > 0);
......@@ -133,7 +134,8 @@ void DensePyrLkOptFlowEstimatorGpu::run(
flowX_.download(flowX.getMatRef());
flowY_.download(flowY.getMatRef());
}
#endif // HAVE_OPENCV_GPU
#endif // HAVE_OPENCV_GPUOPTFLOW
} // namespace videostab
} // namespace cv
......@@ -44,6 +44,15 @@
#include "opencv2/videostab/wobble_suppression.hpp"
#include "opencv2/videostab/ring_buffer.hpp"
#ifdef HAVE_OPENCV_GPUWARPING
# include "opencv2/gpuwarping.hpp"
#endif
#ifdef HAVE_OPENCV_GPU
# include "opencv2/gpu.hpp"
#endif
namespace cv
{
namespace videostab
......@@ -113,7 +122,7 @@ void MoreAccurateMotionWobbleSuppressor::suppress(int idx, const Mat &frame, Mat
}
#ifdef HAVE_OPENCV_GPU
#ifdef HAVE_OPENCV_GPUWARPING
void MoreAccurateMotionWobbleSuppressorGpu::suppress(int idx, const gpu::GpuMat &frame, gpu::GpuMat &result)
{
CV_Assert(motions_ && stabilizationMotions_);
......
......@@ -216,7 +216,7 @@ public:
outlierRejector = tblor;
}
#ifdef HAVE_OPENCV_GPU
#if defined(HAVE_OPENCV_GPUIMGPROC) && defined(HAVE_OPENCV_GPU) && defined(HAVE_OPENCV_GPUOPTFLOW)
if (gpu)
{
KeypointBasedMotionEstimatorGpu *kbest = new KeypointBasedMotionEstimatorGpu(est);
......@@ -257,7 +257,7 @@ public:
outlierRejector = tblor;
}
#ifdef HAVE_OPENCV_GPU
#if defined(HAVE_OPENCV_GPUIMGPROC) && defined(HAVE_OPENCV_GPU) && defined(HAVE_OPENCV_GPUOPTFLOW)
if (gpu)
{
KeypointBasedMotionEstimatorGpu *kbest = new KeypointBasedMotionEstimatorGpu(est);
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment