| /* |
| * stablizer.h - abstract header for DVS (Digital Video Stabilizer) |
| * |
| * Copyright (c) 2014-2016 Intel Corporation |
| * |
| * Licensed under the Apache License, Version 2.0 (the "License"); |
| * you may not use this file except in compliance with the License. |
| * You may obtain a copy of the License at |
| * |
| * http://www.apache.org/licenses/LICENSE-2.0 |
| * |
| * Unless required by applicable law or agreed to in writing, software |
| * distributed under the License is distributed on an "AS IS" BASIS, |
| * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
| * See the License for the specific language governing permissions and |
| * limitations under the License. |
| * |
| * Author: Zong Wei <[email protected]> |
| */ |
| |
| #ifndef _STABILIZER_H_ |
| #define _STABILIZER_H_ |
| |
| #include <vector> |
| #include <opencv2/core.hpp> |
| #include <opencv2/opencv.hpp> |
| #include <opencv2/videostab.hpp> |
| |
| #include "libdvs.h" |
| |
| class OnePassVideoStabilizer : public cv::videostab::OnePassStabilizer |
| { |
| public: |
| virtual ~OnePassVideoStabilizer() {}; |
| |
| virtual cv::Mat nextStabilizedMotion(DvsData* frame, int& stablizedPos); |
| |
| protected: |
| virtual cv::Mat estimateMotion(); |
| virtual void setUpFrame(const cv::Mat &firstFrame); |
| |
| private: |
| |
| }; |
| |
| class TwoPassVideoStabilizer : public cv::videostab::TwoPassStabilizer |
| { |
| public: |
| virtual ~TwoPassVideoStabilizer() {}; |
| |
| virtual cv::Mat nextStabilizedMotion(DvsData* frame, int& stablizedPos); |
| |
| protected: |
| virtual cv::Mat estimateMotion(); |
| virtual void setUpFrame(const cv::Mat &firstFrame); |
| |
| private: |
| |
| }; |
| |
| class VideoStabilizer |
| { |
| public: |
| VideoStabilizer(bool isTwoPass = false, |
| bool wobbleSuppress = false, |
| bool deblur = false, |
| bool inpainter = false); |
| virtual ~VideoStabilizer(); |
| |
| cv::Ptr<cv::videostab::StabilizerBase> stabilizer() const { |
| return stabilizer_; |
| } |
| |
| cv::Mat nextFrame(); |
| cv::Mat nextStabilizedMotion(DvsData* frame, int& stablizedPos); |
| |
| cv::Size trimedVideoSize(cv::Size frameSize); |
| cv::Mat cropVideoFrame(cv::Mat& frame); |
| |
| void setFrameSize(cv::Size frameSize); |
| cv::Size getFrameSize() const { |
| return frameSize_; |
| } |
| |
| void configFeatureDetector(int features, double minDistance); |
| void configMotionFilter(int radius, float stdev); |
| void configDeblurrer(int radius, double sensitivity); |
| |
| public: |
| cv::VideoWriter writer_; |
| |
| private: |
| bool isTwoPass_; |
| float trimRatio_; |
| cv::Size frameSize_; |
| cv::Ptr<cv::videostab::StabilizerBase> stabilizer_; |
| }; |
| |
| |
| #endif |