X-Git-Url: https://git.ao2.it/experiments/opencv_trail_effect.git/blobdiff_plain/d095022ca7b1d9eb46521073b71f2327fb9d5637..648650d64c6777240f5e9e8ba5b005e7b6f415c3:/Segmentation.hpp diff --git a/Segmentation.hpp b/Segmentation.hpp index bd9b4c9..9ad76d7 100644 --- a/Segmentation.hpp +++ b/Segmentation.hpp @@ -51,8 +51,8 @@ public: cv::Mat gray_frame; cv::Mat frame_mask; - cvtColor(frame, gray_frame, CV_RGB2GRAY); - cv::threshold(gray_frame, frame_mask, threshold, 255, CV_THRESH_TOZERO); + cvtColor(frame, gray_frame, cv::COLOR_RGB2GRAY); + cv::threshold(gray_frame, frame_mask, threshold, 255, cv::THRESH_TOZERO); return frame_mask; } @@ -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,14 +81,22 @@ 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); + cv::threshold(foreground_mask, foreground_mask, 0, 255, cv::THRESH_OTSU); cv::medianBlur(foreground_mask, foreground_mask, 9); return foreground_mask; } + + void getBackgroundImage(const cv::Mat& background) + { + pMOG2->getBackgroundImage(background); + } + +private: + cv::Ptr pMOG2; }; #endif // SEGMENTATION_HPP