Go to the documentation of this file.00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029
00030
00031
00032
00033
00034
00035
00036
00037
00038
00039
00040
00041
00042
00043 #ifndef __OPENCV_VIDEOSTAB_OPTICAL_FLOW_HPP__
00044 #define __OPENCV_VIDEOSTAB_OPTICAL_FLOW_HPP__
00045
00046 #include "opencv2/core/core.hpp"
00047 #include "opencv2/opencv_modules.hpp"
00048
00049 #ifdef HAVE_OPENCV_GPU
00050 # include "opencv2/gpu/gpu.hpp"
00051 #endif
00052
00053 namespace cv
00054 {
00055 namespace videostab
00056 {
00057
00058 class CV_EXPORTS ISparseOptFlowEstimator
00059 {
00060 public:
00061 virtual ~ISparseOptFlowEstimator() {}
00062 virtual void run(
00063 InputArray frame0, InputArray frame1, InputArray points0, InputOutputArray points1,
00064 OutputArray status, OutputArray errors) = 0;
00065 };
00066
00067 class CV_EXPORTS IDenseOptFlowEstimator
00068 {
00069 public:
00070 virtual ~IDenseOptFlowEstimator() {}
00071 virtual void run(
00072 InputArray frame0, InputArray frame1, InputOutputArray flowX, InputOutputArray flowY,
00073 OutputArray errors) = 0;
00074 };
00075
00076 class CV_EXPORTS PyrLkOptFlowEstimatorBase
00077 {
00078 public:
00079 PyrLkOptFlowEstimatorBase() { setWinSize(Size(21, 21)); setMaxLevel(3); }
00080
00081 void setWinSize(Size val) { winSize_ = val; }
00082 Size winSize() const { return winSize_; }
00083
00084 void setMaxLevel(int val) { maxLevel_ = val; }
00085 int maxLevel() const { return maxLevel_; }
00086
00087 protected:
00088 Size winSize_;
00089 int maxLevel_;
00090 };
00091
00092 class CV_EXPORTS SparsePyrLkOptFlowEstimator
00093 : public PyrLkOptFlowEstimatorBase, public ISparseOptFlowEstimator
00094 {
00095 public:
00096 virtual void run(
00097 InputArray frame0, InputArray frame1, InputArray points0, InputOutputArray points1,
00098 OutputArray status, OutputArray errors);
00099 };
00100
00101 #ifdef HAVE_OPENCV_GPU
00102 class CV_EXPORTS DensePyrLkOptFlowEstimatorGpu
00103 : public PyrLkOptFlowEstimatorBase, public IDenseOptFlowEstimator
00104 {
00105 public:
00106 DensePyrLkOptFlowEstimatorGpu();
00107
00108 virtual void run(
00109 InputArray frame0, InputArray frame1, InputOutputArray flowX, InputOutputArray flowY,
00110 OutputArray errors);
00111 private:
00112 gpu::PyrLKOpticalFlow optFlowEstimator_;
00113 gpu::GpuMat frame0_, frame1_, flowX_, flowY_, errors_;
00114 };
00115 #endif
00116
00117 }
00118 }
00119
00120 #endif