123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150 |
- #ifndef OPENCV_VIDEOSTAB_OPTICAL_FLOW_HPP
- #define OPENCV_VIDEOSTAB_OPTICAL_FLOW_HPP
- #include "opencv2/core.hpp"
- #include "opencv2/opencv_modules.hpp"
- #ifdef HAVE_OPENCV_CUDAOPTFLOW
- #include "opencv2/cudaoptflow.hpp"
- #endif
- namespace cv
- {
- namespace videostab
- {
- class CV_EXPORTS ISparseOptFlowEstimator
- {
- public:
- virtual ~ISparseOptFlowEstimator() {}
- virtual void run(
- InputArray frame0, InputArray frame1, InputArray points0, InputOutputArray points1,
- OutputArray status, OutputArray errors) = 0;
- };
- class CV_EXPORTS IDenseOptFlowEstimator
- {
- public:
- virtual ~IDenseOptFlowEstimator() {}
- virtual void run(
- InputArray frame0, InputArray frame1, InputOutputArray flowX, InputOutputArray flowY,
- OutputArray errors) = 0;
- };
- class CV_EXPORTS PyrLkOptFlowEstimatorBase
- {
- public:
- PyrLkOptFlowEstimatorBase() { setWinSize(Size(21, 21)); setMaxLevel(3); }
- virtual void setWinSize(Size val) { winSize_ = val; }
- virtual Size winSize() const { return winSize_; }
- virtual void setMaxLevel(int val) { maxLevel_ = val; }
- virtual int maxLevel() const { return maxLevel_; }
- virtual ~PyrLkOptFlowEstimatorBase() {}
- protected:
- Size winSize_;
- int maxLevel_;
- };
- class CV_EXPORTS SparsePyrLkOptFlowEstimator
- : public PyrLkOptFlowEstimatorBase, public ISparseOptFlowEstimator
- {
- public:
- virtual void run(
- InputArray frame0, InputArray frame1, InputArray points0, InputOutputArray points1,
- OutputArray status, OutputArray errors);
- };
- #ifdef HAVE_OPENCV_CUDAOPTFLOW
- class CV_EXPORTS SparsePyrLkOptFlowEstimatorGpu
- : public PyrLkOptFlowEstimatorBase, public ISparseOptFlowEstimator
- {
- public:
- SparsePyrLkOptFlowEstimatorGpu();
- virtual void run(
- InputArray frame0, InputArray frame1, InputArray points0, InputOutputArray points1,
- OutputArray status, OutputArray errors);
- void run(const cuda::GpuMat &frame0, const cuda::GpuMat &frame1, const cuda::GpuMat &points0, cuda::GpuMat &points1,
- cuda::GpuMat &status, cuda::GpuMat &errors);
- void run(const cuda::GpuMat &frame0, const cuda::GpuMat &frame1, const cuda::GpuMat &points0, cuda::GpuMat &points1,
- cuda::GpuMat &status);
- private:
- Ptr<cuda::SparsePyrLKOpticalFlow> optFlowEstimator_;
- cuda::GpuMat frame0_, frame1_, points0_, points1_, status_, errors_;
- };
- class CV_EXPORTS DensePyrLkOptFlowEstimatorGpu
- : public PyrLkOptFlowEstimatorBase, public IDenseOptFlowEstimator
- {
- public:
- DensePyrLkOptFlowEstimatorGpu();
- virtual void run(
- InputArray frame0, InputArray frame1, InputOutputArray flowX, InputOutputArray flowY,
- OutputArray errors);
- private:
- Ptr<cuda::DensePyrLKOpticalFlow> optFlowEstimator_;
- cuda::GpuMat frame0_, frame1_, flowX_, flowY_, errors_;
- };
- #endif
- }
- }
- #endif
|