#include "LBP_MRF.h" #if CV_MAJOR_VERSION >= 2 && CV_MAJOR_VERSION <= 3 using namespace bgslibrary::algorithms; LBP_MRF::LBP_MRF() : IBGS(quote(LBP_MRF)), Detector(nullptr) { debug_construction(LBP_MRF); initLoadSaveConfig(algorithmName); Detector = new lbp_mrf::MotionDetection(); Detector->SetMode(lbp_mrf::MotionDetection::md_LBPHistograms); } LBP_MRF::~LBP_MRF() { debug_destruction(LBP_MRF); delete Detector; Detector = nullptr; } void LBP_MRF::process(const cv::Mat &img_input, cv::Mat &img_output, cv::Mat &img_bgmodel) { init(img_input, img_output, img_bgmodel); #if CV_MAJOR_VERSION > 3 || (CV_MAJOR_VERSION == 3 && CV_SUBMINOR_VERSION >= 9) IplImage TempImage = cvIplImage(img_input); #else IplImage TempImage(img_input); #endif lbp_mrf::MEImage InputImage(img_input.cols, img_input.rows, img_input.channels()); lbp_mrf::MEImage OutputImage(img_input.cols, img_input.rows, img_input.channels()); InputImage.SetIplImage((void*)&TempImage); Detector->DetectMotions(InputImage); Detector->GetMotionsMask(OutputImage); img_foreground = cv::cvarrToMat((IplImage*)OutputImage.GetIplImage()); //bitwise_not(img_foreground, img_background); img_background = cv::Mat::zeros(img_input.size(), img_input.type()); #ifndef MEX_COMPILE_FLAG if (showOutput) cv::imshow(algorithmName + "_FG", img_foreground); #endif img_foreground.copyTo(img_output); img_background.copyTo(img_bgmodel); firstTime = false; } void LBP_MRF::save_config(cv::FileStorage &fs) { fs << "showOutput" << showOutput; } void LBP_MRF::load_config(cv::FileStorage &fs) { fs["showOutput"] >> showOutput; } #endif