X-Git-Url: https://git.ao2.it/experiments/opencv_trail_effect.git/blobdiff_plain/7555c94ede06439d70ea34dca41947c0caf2fa95..79d57b3dedad2f0ae675bacc63470a5af1a176e6:/Segmentation.hpp diff --git a/Segmentation.hpp b/Segmentation.hpp index bd9b4c9..5e87326 100644 --- a/Segmentation.hpp +++ b/Segmentation.hpp @@ -63,17 +63,17 @@ public: * http://docs.opencv.org/master/d1/dc5/tutorial_background_subtraction.html */ -class MOG2Segmentation : public Segmentation, public cv::BackgroundSubtractorMOG2 { +class MOG2Segmentation : public Segmentation { public: - MOG2Segmentation(cv::VideoCapture& inputVideo, int learning_frames) : - cv::BackgroundSubtractorMOG2() + MOG2Segmentation(cv::VideoCapture& inputVideo, int learning_frames) { cv::Mat background; cv::Mat foreground_mask; + pMOG2 = cv::createBackgroundSubtractorMOG2(); for (int i = 0; i < learning_frames; i++) { inputVideo >> background; - this->operator()(background, foreground_mask); + pMOG2->apply(background, foreground_mask); } } @@ -81,7 +81,7 @@ public: { cv::Mat foreground_mask; - this->operator()(frame, foreground_mask, 0); + pMOG2->apply(frame, foreground_mask, 0); cv::erode(foreground_mask, foreground_mask, cv::Mat()); cv::dilate(foreground_mask, foreground_mask, cv::Mat()); cv::threshold(foreground_mask, foreground_mask, 0, 255, CV_THRESH_OTSU); @@ -89,6 +89,14 @@ public: return foreground_mask; } + + void getBackgroundImage(const cv::Mat& background) + { + pMOG2->getBackgroundImage(background); + } + +private: + cv::Ptr pMOG2; }; #endif // SEGMENTATION_HPP