diff --git a/src/FrameProcessor.cpp b/src/FrameProcessor.cpp
index 8116df2f00de9b0e2a5f4fae5387c6b8ab0d759a..558b5c821fa844ba1355448fa28c7c964e71b235 100644
--- a/src/FrameProcessor.cpp
+++ b/src/FrameProcessor.cpp
@@ -115,12 +115,6 @@ namespace bgslibrary
     if (enableLBFuzzyAdaptiveSOM)
       lbFuzzyAdaptiveSOM = std::make_shared<LBFuzzyAdaptiveSOM>();
 
-    if (enableLbpMrf)
-      lbpMrf = std::make_shared<LBP_MRF>();
-
-    if (enableMultiLayer)
-      multiLayer = std::make_shared<MultiLayer>();
-
     if (enablePBAS)
       pixelBasedAdaptiveSegmenter = std::make_shared<PixelBasedAdaptiveSegmenter>();
 
@@ -137,6 +131,14 @@ namespace bgslibrary
       multiCue = std::make_shared<MultiCue>();
 #endif
 
+#if CV_MAJOR_VERSION >= 2 && CV_MAJOR_VERSION <= 3 && CV_MINOR_VERSION <= 4 && CV_VERSION_REVISION <= 7
+    if (enableLbpMrf)
+      lbpMrf = std::make_shared<LBP_MRF>();
+
+    if (enableMultiLayer)
+      multiLayer = std::make_shared<MultiLayer>();
+#endif
+
     if (enableSigmaDelta)
       sigmaDelta = std::make_shared<SigmaDelta>();
 
@@ -277,16 +279,6 @@ namespace bgslibrary
     if (enableLBFuzzyAdaptiveSOM)
       process("LBFuzzyAdaptiveSOM", lbFuzzyAdaptiveSOM, img_preProcessor, img_lbFuzzyAdaptiveSOM);
 
-    if (enableLbpMrf)
-      process("LbpMrf", lbpMrf, img_preProcessor, img_lbpMrf);
-
-    if (enableMultiLayer)
-    {
-      multiLayer->setStatus(MultiLayer::MLBGS_LEARN);
-      //multiLayer->setStatus(MultiLayer::MLBGS_DETECT);
-      process("MultiLayer", multiLayer, img_preProcessor, img_multiLayer);
-    }
-
     if (enablePBAS)
       process("PBAS", pixelBasedAdaptiveSegmenter, img_preProcessor, img_pixelBasedAdaptiveSegmenter);
 
@@ -302,7 +294,19 @@ namespace bgslibrary
     if (enableMultiCue)
       process("MultiCue", multiCue, img_preProcessor, img_multiCue);
 #endif
-    
+
+#if CV_MAJOR_VERSION >= 2 && CV_MAJOR_VERSION <= 3 && CV_MINOR_VERSION <= 4 && CV_VERSION_REVISION <= 7
+    if (enableLbpMrf)
+      process("LbpMrf", lbpMrf, img_preProcessor, img_lbpMrf);
+
+    if (enableMultiLayer)
+    {
+      multiLayer->setStatus(MultiLayer::MLBGS_LEARN);
+      //multiLayer->setStatus(MultiLayer::MLBGS_DETECT);
+      process("MultiLayer", multiLayer, img_preProcessor, img_multiLayer);
+    }
+#endif
+
     if (enableSigmaDelta)
       process("SigmaDelta", sigmaDelta, img_preProcessor, img_sigmaDelta);
 
@@ -369,8 +373,6 @@ namespace bgslibrary
       foregroundMaskAnalysis->process(frameNumber, "LBMixtureOfGaussians", img_lbMixtureOfGaussians);
       foregroundMaskAnalysis->process(frameNumber, "LBAdaptiveSOM", img_lbAdaptiveSOM);
       foregroundMaskAnalysis->process(frameNumber, "LBFuzzyAdaptiveSOM", img_lbFuzzyAdaptiveSOM);
-      foregroundMaskAnalysis->process(frameNumber, "LbpMrf", img_lbpMrf);
-      foregroundMaskAnalysis->process(frameNumber, "MultiLayer", img_multiLayer);
       foregroundMaskAnalysis->process(frameNumber, "PBAS", img_pixelBasedAdaptiveSegmenter);
       foregroundMaskAnalysis->process(frameNumber, "VuMeter", img_vumeter);
       foregroundMaskAnalysis->process(frameNumber, "KDE", img_kde);
@@ -378,6 +380,11 @@ namespace bgslibrary
       foregroundMaskAnalysis->process(frameNumber, "MultiCue", img_multiCue);
 #endif
 
+#if CV_MAJOR_VERSION >= 2 && CV_MAJOR_VERSION <= 3 && CV_MINOR_VERSION <= 4 && CV_VERSION_REVISION <= 7
+      foregroundMaskAnalysis->process(frameNumber, "LbpMrf", img_lbpMrf);
+      foregroundMaskAnalysis->process(frameNumber, "MultiLayer", img_multiLayer);
+#endif
+
       foregroundMaskAnalysis->process(frameNumber, "SigmaDelta", img_sigmaDelta);
       foregroundMaskAnalysis->process(frameNumber, "SuBSENSE", img_subSENSE);
       foregroundMaskAnalysis->process(frameNumber, "LOBSTER", img_lobster);
@@ -448,15 +455,18 @@ namespace bgslibrary
     fs << "enableLBMixtureOfGaussians" << enableLBMixtureOfGaussians;
     fs << "enableLBAdaptiveSOM" << enableLBAdaptiveSOM;
     fs << "enableLBFuzzyAdaptiveSOM" << enableLBFuzzyAdaptiveSOM;
-    fs << "enableLbpMrf" << enableLbpMrf;
-    fs << "enableMultiLayer" << enableMultiLayer;
     fs << "enablePBAS" << enablePBAS;
     fs << "enableVuMeter" << enableVuMeter;
     fs << "enableKDE" << enableKDE;
     fs << "enableIMBS" << enableIMBS;
     fs << "enableMultiCue" << enableMultiCue;
 #endif
-    
+
+#if CV_MAJOR_VERSION >= 2 && CV_MAJOR_VERSION <= 3 && CV_MINOR_VERSION <= 4 && CV_VERSION_REVISION <= 7
+    fs << "enableLbpMrf" << enableLbpMrf;
+    fs << "enableMultiLayer" << enableMultiLayer;
+#endif
+
     fs << "enableSigmaDelta" << enableSigmaDelta;
     fs << "enableSuBSENSE" << enableSuBSENSE;
     fs << "enableLOBSTER" << enableLOBSTER;
@@ -510,15 +520,18 @@ namespace bgslibrary
     fs["enableLBMixtureOfGaussians"] >> enableLBMixtureOfGaussians;
     fs["enableLBAdaptiveSOM"] >> enableLBAdaptiveSOM;
     fs["enableLBFuzzyAdaptiveSOM"] >> enableLBFuzzyAdaptiveSOM;
-    fs["enableLbpMrf"] >> enableLbpMrf;
-    fs["enableMultiLayer"] >> enableMultiLayer;
     fs["enablePBAS"] >> enablePBAS;
     fs["enableVuMeter"] >> enableVuMeter;
     fs["enableKDE"] >> enableKDE;
     fs["enableIMBS"] >> enableIMBS;
     fs["enableMultiCue"] >> enableMultiCue;
 #endif
-    
+
+#if CV_MAJOR_VERSION >= 2 && CV_MAJOR_VERSION <= 3 && CV_MINOR_VERSION <= 4 && CV_VERSION_REVISION <= 7
+    fs["enableLbpMrf"] >> enableLbpMrf;
+    fs["enableMultiLayer"] >> enableMultiLayer;
+#endif
+
     fs["enableSigmaDelta"] >> enableSigmaDelta;
     fs["enableSuBSENSE"] >> enableSuBSENSE;
     fs["enableLOBSTER"] >> enableLOBSTER;
diff --git a/src/FrameProcessor.h b/src/FrameProcessor.h
index 1eec6d601918556f62e1926d8b5735a996778e58..fa3b94ab3a91c9bf87b502dc4676cc4c76bc952c 100644
--- a/src/FrameProcessor.h
+++ b/src/FrameProcessor.h
@@ -144,14 +144,6 @@ namespace bgslibrary
     cv::Mat img_lbFuzzyAdaptiveSOM;
     std::shared_ptr<LBFuzzyAdaptiveSOM> lbFuzzyAdaptiveSOM;
     bool enableLBFuzzyAdaptiveSOM = false;
-    
-    cv::Mat img_lbpMrf;
-    std::shared_ptr<LBP_MRF> lbpMrf;
-    bool enableLbpMrf = false;
-
-    cv::Mat img_multiLayer;
-    std::shared_ptr<MultiLayer> multiLayer;
-    bool enableMultiLayer = false;
 
     cv::Mat img_pixelBasedAdaptiveSegmenter;
     std::shared_ptr<PixelBasedAdaptiveSegmenter> pixelBasedAdaptiveSegmenter;
@@ -174,6 +166,16 @@ namespace bgslibrary
     bool enableMultiCue = false;
 #endif
 
+#if CV_MAJOR_VERSION >= 2 && CV_MAJOR_VERSION <= 3 && CV_MINOR_VERSION <= 4 && CV_VERSION_REVISION <= 7
+    cv::Mat img_lbpMrf;
+    std::shared_ptr<LBP_MRF> lbpMrf;
+    bool enableLbpMrf = false;
+
+    cv::Mat img_multiLayer;
+    std::shared_ptr<MultiLayer> multiLayer;
+    bool enableMultiLayer = false;
+#endif
+
     cv::Mat img_sigmaDelta;
     std::shared_ptr<SigmaDelta> sigmaDelta;
     bool enableSigmaDelta = false;
diff --git a/src/algorithms/IBGS.h b/src/algorithms/IBGS.h
index bbf835fa24b9289738c76ff6b957cfbf20cedd75..5dca07de92321a30a83de345a40e644f2e020581 100644
--- a/src/algorithms/IBGS.h
+++ b/src/algorithms/IBGS.h
@@ -19,10 +19,6 @@
 
 #include "../utils/ILoadSaveConfig.h"
 
-#ifndef CV_RGB
-#define CV_RGB(r, g, b) cv::Scalar((b), (g), (r), 0)
-#endif
-
 #if !defined(bgs_register)
 #define bgs_register(x) static BGS_Register<x> register_##x(quote(x))
 #endif
diff --git a/src/algorithms/LBP_MRF.cpp b/src/algorithms/LBP_MRF.cpp
index e0d4c64977688cccf415075cb1f0c2ca27682b95..572a14bef9e73a939a0b73e79553559a5d7665c8 100644
--- a/src/algorithms/LBP_MRF.cpp
+++ b/src/algorithms/LBP_MRF.cpp
@@ -1,6 +1,6 @@
 #include "LBP_MRF.h"
 
-#if CV_MAJOR_VERSION >= 2 && CV_MAJOR_VERSION <= 3
+#if CV_MAJOR_VERSION >= 2 && CV_MAJOR_VERSION <= 3 && CV_MINOR_VERSION <= 4 && CV_VERSION_REVISION <= 7
 
 using namespace bgslibrary::algorithms;
 
diff --git a/src/algorithms/LBP_MRF.h b/src/algorithms/LBP_MRF.h
index 0edb3873155940fa683ba053a095a0f12380f479..b7a26c26f09d69d11f9c296f97bce0ee8b20f515 100644
--- a/src/algorithms/LBP_MRF.h
+++ b/src/algorithms/LBP_MRF.h
@@ -3,7 +3,7 @@
 #include "IBGS.h"
 
 #include "opencv2/core/version.hpp"
-#if CV_MAJOR_VERSION >= 2 && CV_MAJOR_VERSION <= 3
+#if CV_MAJOR_VERSION >= 2 && CV_MAJOR_VERSION <= 3 && CV_MINOR_VERSION <= 4 && CV_VERSION_REVISION <= 7
 
 #include "LBP_MRF/MotionDetection.hpp"
 
diff --git a/src/algorithms/LBP_MRF/MEDefs.hpp b/src/algorithms/LBP_MRF/MEDefs.hpp
index 386dc9610c203f5add6462bfd42b5024c2cf2760..6c5fc25b0d96303166c358d9584e03be109893c6 100644
--- a/src/algorithms/LBP_MRF/MEDefs.hpp
+++ b/src/algorithms/LBP_MRF/MEDefs.hpp
@@ -1,7 +1,7 @@
 #pragma once
 
 #include "opencv2/core/version.hpp"
-#if CV_MAJOR_VERSION >= 2 && CV_MAJOR_VERSION <= 3
+#if CV_MAJOR_VERSION >= 2 && CV_MAJOR_VERSION <= 3 && CV_MINOR_VERSION <= 4 && CV_VERSION_REVISION <= 7
 
 namespace bgslibrary
 {
diff --git a/src/algorithms/LBP_MRF/MEHistogram.cpp b/src/algorithms/LBP_MRF/MEHistogram.cpp
index 78875ddb87ec4c7a9925e5aba891fe92fc8ef2d4..6ebb0b16f7a7dcb3e2908db1243a208753782b76 100644
--- a/src/algorithms/LBP_MRF/MEHistogram.cpp
+++ b/src/algorithms/LBP_MRF/MEHistogram.cpp
@@ -8,7 +8,7 @@
 #include "MEDefs.hpp"
 #include "MEImage.hpp"
 
-#if CV_MAJOR_VERSION >= 2 && CV_MAJOR_VERSION <= 3
+#if CV_MAJOR_VERSION >= 2 && CV_MAJOR_VERSION <= 3 && CV_MINOR_VERSION <= 4 && CV_VERSION_REVISION <= 7
 
 using namespace bgslibrary::algorithms::lbp_mrf;
 
diff --git a/src/algorithms/LBP_MRF/MEHistogram.hpp b/src/algorithms/LBP_MRF/MEHistogram.hpp
index fe0868c94f1e3309b680d3b93ea53fa6424aae8c..415b0e064f661a53f2e268384aef245d53b766c2 100644
--- a/src/algorithms/LBP_MRF/MEHistogram.hpp
+++ b/src/algorithms/LBP_MRF/MEHistogram.hpp
@@ -1,7 +1,7 @@
 #pragma once
 
 #include "opencv2/core/version.hpp"
-#if CV_MAJOR_VERSION >= 2 && CV_MAJOR_VERSION <= 3
+#if CV_MAJOR_VERSION >= 2 && CV_MAJOR_VERSION <= 3 && CV_MINOR_VERSION <= 4 && CV_VERSION_REVISION <= 7
 
 namespace bgslibrary
 {
diff --git a/src/algorithms/LBP_MRF/MEImage.cpp b/src/algorithms/LBP_MRF/MEImage.cpp
index 7899b5220cff399ea07dc345c11d560a613f6142..25a4aa492758a7e31230b1a36c6c436ec98f2037 100644
--- a/src/algorithms/LBP_MRF/MEImage.cpp
+++ b/src/algorithms/LBP_MRF/MEImage.cpp
@@ -6,7 +6,7 @@
 #include "MEImage.hpp"
 #include "MEDefs.hpp"
 
-#if CV_MAJOR_VERSION >= 2 && CV_MAJOR_VERSION <= 3
+#if CV_MAJOR_VERSION >= 2 && CV_MAJOR_VERSION <= 3 && CV_MINOR_VERSION <= 4 && CV_VERSION_REVISION <= 7
 
 //using namespace bgslibrary::algorithms::lbp_mrf;
 
diff --git a/src/algorithms/LBP_MRF/MEImage.hpp b/src/algorithms/LBP_MRF/MEImage.hpp
index 9bc9e72729127a0413ad4c3fae13a530d8527ff5..b3c6da0e9da52ced06af5606a880be40091e92a4 100644
--- a/src/algorithms/LBP_MRF/MEImage.hpp
+++ b/src/algorithms/LBP_MRF/MEImage.hpp
@@ -1,7 +1,7 @@
 #pragma once
 
 #include "opencv2/core/version.hpp"
-#if CV_MAJOR_VERSION >= 2 && CV_MAJOR_VERSION <= 3
+#if CV_MAJOR_VERSION >= 2 && CV_MAJOR_VERSION <= 3 && CV_MINOR_VERSION <= 4 && CV_VERSION_REVISION <= 7
 
 namespace bgslibrary
 {
diff --git a/src/algorithms/LBP_MRF/MotionDetection.cpp b/src/algorithms/LBP_MRF/MotionDetection.cpp
index b434806ad248ddfce5a28d5abe809a00c337ab24..c5897ee9301bc2d35588168a141ea6062d737d45 100644
--- a/src/algorithms/LBP_MRF/MotionDetection.cpp
+++ b/src/algorithms/LBP_MRF/MotionDetection.cpp
@@ -3,7 +3,7 @@
 
 #include "MotionDetection.hpp"
 
-#if CV_MAJOR_VERSION >= 2 && CV_MAJOR_VERSION <= 3
+#if CV_MAJOR_VERSION >= 2 && CV_MAJOR_VERSION <= 3 && CV_MINOR_VERSION <= 4 && CV_VERSION_REVISION <= 7
 
 #include "graph.h"
 #include "MEHistogram.hpp"
diff --git a/src/algorithms/LBP_MRF/MotionDetection.hpp b/src/algorithms/LBP_MRF/MotionDetection.hpp
index f7720e5d2198275130c20c7762760fa91b129d81..b08647163a769e7861f74f05f036a7ecc3db45e8 100644
--- a/src/algorithms/LBP_MRF/MotionDetection.hpp
+++ b/src/algorithms/LBP_MRF/MotionDetection.hpp
@@ -1,7 +1,7 @@
 #pragma once
 
 #include "opencv2/core/version.hpp"
-#if CV_MAJOR_VERSION >= 2 && CV_MAJOR_VERSION <= 3
+#if CV_MAJOR_VERSION >= 2 && CV_MAJOR_VERSION <= 3 && CV_MINOR_VERSION <= 4 && CV_VERSION_REVISION <= 7
 
 #include <opencv2/imgproc/types_c.h>
 
diff --git a/src/algorithms/MultiLayer.cpp b/src/algorithms/MultiLayer.cpp
index 49ad0c5ba2208680db6078fce16c59ab7078287b..de972f1c2e3357db0df20f77a907efb7918e2662 100644
--- a/src/algorithms/MultiLayer.cpp
+++ b/src/algorithms/MultiLayer.cpp
@@ -1,6 +1,6 @@
 #include "MultiLayer.h"
 
-#if CV_MAJOR_VERSION >= 2 && CV_MAJOR_VERSION <= 3
+#if CV_MAJOR_VERSION >= 2 && CV_MAJOR_VERSION <= 3 && CV_MINOR_VERSION <= 4 && CV_VERSION_REVISION <= 7
 
 using namespace bgslibrary::algorithms;
 
diff --git a/src/algorithms/MultiLayer.h b/src/algorithms/MultiLayer.h
index b33d72fd076c929afe569ce33ea8721d914a137d..9392e7d262a65e8cbf3c95749c66db881e023b6c 100644
--- a/src/algorithms/MultiLayer.h
+++ b/src/algorithms/MultiLayer.h
@@ -1,7 +1,7 @@
 #pragma once
 
 #include "opencv2/core/version.hpp"
-#if CV_MAJOR_VERSION >= 2 && CV_MAJOR_VERSION <= 3
+#if CV_MAJOR_VERSION >= 2 && CV_MAJOR_VERSION <= 3 && CV_MINOR_VERSION <= 4 && CV_VERSION_REVISION <= 7
 
 #include "IBGS.h"
 #include "MultiLayer/CMultiLayerBGS.h"
diff --git a/src/algorithms/MultiLayer/BackgroundSubtractionAPI.h b/src/algorithms/MultiLayer/BackgroundSubtractionAPI.h
index 13f02084158d4f589bc13ed17d179764611ecf83..171e63de61eea03b195add2be19ca0105c336a94 100644
--- a/src/algorithms/MultiLayer/BackgroundSubtractionAPI.h
+++ b/src/algorithms/MultiLayer/BackgroundSubtractionAPI.h
@@ -1,7 +1,7 @@
 #pragma once
 
 #include "opencv2/core/version.hpp"
-#if CV_MAJOR_VERSION >= 2 && CV_MAJOR_VERSION <= 3
+#if CV_MAJOR_VERSION >= 2 && CV_MAJOR_VERSION <= 3 && CV_MINOR_VERSION <= 4 && CV_VERSION_REVISION <= 7
 
 // opencv legacy includes
 #include "OpenCvLegacyIncludes.h"
diff --git a/src/algorithms/MultiLayer/BlobExtraction.cpp b/src/algorithms/MultiLayer/BlobExtraction.cpp
index 6f67a349afae929652f411e1f1f12069ff795663..91b20045f524cfdaa6b637797e96bb4102938c2f 100644
--- a/src/algorithms/MultiLayer/BlobExtraction.cpp
+++ b/src/algorithms/MultiLayer/BlobExtraction.cpp
@@ -1,5 +1,5 @@
 #include "opencv2/core/version.hpp"
-#if CV_MAJOR_VERSION >= 2 && CV_MAJOR_VERSION <= 3
+#if CV_MAJOR_VERSION >= 2 && CV_MAJOR_VERSION <= 3 && CV_MINOR_VERSION <= 4 && CV_VERSION_REVISION <= 7
 
 #include "BlobResult.h"
 #include "BlobExtraction.h"
diff --git a/src/algorithms/MultiLayer/BlobExtraction.h b/src/algorithms/MultiLayer/BlobExtraction.h
index 71e1f405768e11fc6be393846e88eb6f60e1ab01..c95b0e2e6013e3bb2161cdcd0f54f618072c5726 100644
--- a/src/algorithms/MultiLayer/BlobExtraction.h
+++ b/src/algorithms/MultiLayer/BlobExtraction.h
@@ -1,7 +1,7 @@
 #pragma once
 
 #include "opencv2/core/version.hpp"
-#if CV_MAJOR_VERSION >= 2 && CV_MAJOR_VERSION <= 3
+#if CV_MAJOR_VERSION >= 2 && CV_MAJOR_VERSION <= 3 && CV_MINOR_VERSION <= 4 && CV_VERSION_REVISION <= 7
 
 namespace bgslibrary
 {
diff --git a/src/algorithms/MultiLayer/BlobResult.cpp b/src/algorithms/MultiLayer/BlobResult.cpp
index b1a1bf6e005b048cd3ed793ca2f689de2dd98672..be99792ab43f1463e9819db3d32291562fa6418d 100644
--- a/src/algorithms/MultiLayer/BlobResult.cpp
+++ b/src/algorithms/MultiLayer/BlobResult.cpp
@@ -4,7 +4,7 @@
 #include <algorithm>
 
 #include "opencv2/core/version.hpp"
-#if CV_MAJOR_VERSION >= 2 && CV_MAJOR_VERSION <= 3
+#if CV_MAJOR_VERSION >= 2 && CV_MAJOR_VERSION <= 3 && CV_MINOR_VERSION <= 4 && CV_VERSION_REVISION <= 7
 
 #include "BlobResult.h"
 #include "BlobExtraction.h"
diff --git a/src/algorithms/MultiLayer/BlobResult.h b/src/algorithms/MultiLayer/BlobResult.h
index 2213231fa8dcd48e5b6abdc828b2516310ad8837..83fff96c597234882bece6d4c075a06b25948eb3 100644
--- a/src/algorithms/MultiLayer/BlobResult.h
+++ b/src/algorithms/MultiLayer/BlobResult.h
@@ -5,7 +5,7 @@
 #include <functional>
 
 #include "opencv2/core/version.hpp"
-#if CV_MAJOR_VERSION >= 2 && CV_MAJOR_VERSION <= 3
+#if CV_MAJOR_VERSION >= 2 && CV_MAJOR_VERSION <= 3 && CV_MINOR_VERSION <= 4 && CV_VERSION_REVISION <= 7
 
 #include "BlobLibraryConfiguration.h"
 // opencv legacy includes
diff --git a/src/algorithms/MultiLayer/CMultiLayerBGS.cpp b/src/algorithms/MultiLayer/CMultiLayerBGS.cpp
index b2952163223061e3bb74ebec6a8ee0550db43804..1adce20f9ff143bff6639a266e09a4e1c3aa1b3e 100644
--- a/src/algorithms/MultiLayer/CMultiLayerBGS.cpp
+++ b/src/algorithms/MultiLayer/CMultiLayerBGS.cpp
@@ -7,7 +7,7 @@
 #include <iostream>
 
 #include "opencv2/core/version.hpp"
-#if CV_MAJOR_VERSION >= 2 && CV_MAJOR_VERSION <= 3
+#if CV_MAJOR_VERSION >= 2 && CV_MAJOR_VERSION <= 3 && CV_MINOR_VERSION <= 4 && CV_VERSION_REVISION <= 7
 
 #include "CMultiLayerBGS.h"
 #include "OpenCvLegacyIncludes.h"
diff --git a/src/algorithms/MultiLayer/CMultiLayerBGS.h b/src/algorithms/MultiLayer/CMultiLayerBGS.h
index 5ff976c59dfc79888ce537c529c11f8765f805a8..75b1a7060565d8b56b0c219a66eea1fc72f12ef5 100644
--- a/src/algorithms/MultiLayer/CMultiLayerBGS.h
+++ b/src/algorithms/MultiLayer/CMultiLayerBGS.h
@@ -21,7 +21,7 @@ step. If you compile it under Linux, please uncomment it.
 #include <opencv2/imgproc.hpp>
 
 #include "opencv2/core/version.hpp"
-#if CV_MAJOR_VERSION >= 2 && CV_MAJOR_VERSION <= 3
+#if CV_MAJOR_VERSION >= 2 && CV_MAJOR_VERSION <= 3 && CV_MINOR_VERSION <= 4 && CV_VERSION_REVISION <= 7
 
 #include "LocalBinaryPattern.h"
 #include "BlobResult.h"
diff --git a/src/algorithms/MultiLayer/LocalBinaryPattern.cpp b/src/algorithms/MultiLayer/LocalBinaryPattern.cpp
index 120e01d49e7bd0d70064350838326f7d3b9a8378..f0d65ed6133c9d871b405b8bfbe79589703e6eea 100644
--- a/src/algorithms/MultiLayer/LocalBinaryPattern.cpp
+++ b/src/algorithms/MultiLayer/LocalBinaryPattern.cpp
@@ -1,7 +1,7 @@
 #include "LocalBinaryPattern.h"
 
 #include "opencv2/core/version.hpp"
-#if CV_MAJOR_VERSION >= 2 && CV_MAJOR_VERSION <= 3
+#if CV_MAJOR_VERSION >= 2 && CV_MAJOR_VERSION <= 3 && CV_MINOR_VERSION <= 4 && CV_VERSION_REVISION <= 7
 
 using namespace bgslibrary::algorithms::multilayer;
 
diff --git a/src/algorithms/MultiLayer/LocalBinaryPattern.h b/src/algorithms/MultiLayer/LocalBinaryPattern.h
index 69a119e21da3598244afce1585474fea93e6535a..cce9c13951419a1d160d65640c0264a06b90f53a 100644
--- a/src/algorithms/MultiLayer/LocalBinaryPattern.h
+++ b/src/algorithms/MultiLayer/LocalBinaryPattern.h
@@ -3,7 +3,7 @@
 #include <cstdio>
 
 #include "opencv2/core/version.hpp"
-#if CV_MAJOR_VERSION >= 2 && CV_MAJOR_VERSION <= 3
+#if CV_MAJOR_VERSION >= 2 && CV_MAJOR_VERSION <= 3 && CV_MINOR_VERSION <= 4 && CV_VERSION_REVISION <= 7
 
 #include "BGS.h"
 #include "OpenCvDataConversion.h"
diff --git a/src/algorithms/MultiLayer/OpenCvDataConversion.h b/src/algorithms/MultiLayer/OpenCvDataConversion.h
index 9e78c6afc7ec311cad9a802ccea24e99a7c9bad4..52ec57cb89967ead9855f581e9625a587ebb7fe6 100644
--- a/src/algorithms/MultiLayer/OpenCvDataConversion.h
+++ b/src/algorithms/MultiLayer/OpenCvDataConversion.h
@@ -3,7 +3,7 @@
 #include <stdio.h>
 
 #include "opencv2/core/version.hpp"
-#if CV_MAJOR_VERSION >= 2 && CV_MAJOR_VERSION <= 3
+#if CV_MAJOR_VERSION >= 2 && CV_MAJOR_VERSION <= 3 && CV_MINOR_VERSION <= 4 && CV_VERSION_REVISION <= 7
 
 // opencv legacy includes
 #include "OpenCvLegacyIncludes.h"
diff --git a/src/algorithms/dp/AdaptiveMedianBGS.cpp b/src/algorithms/dp/AdaptiveMedianBGS.cpp
index 2609fb0906cc11900502b8fa6afb650b64db5471..b29bae5b29ae21b6b772b445887902f138a73887 100644
--- a/src/algorithms/dp/AdaptiveMedianBGS.cpp
+++ b/src/algorithms/dp/AdaptiveMedianBGS.cpp
@@ -1,4 +1,5 @@
 #include "AdaptiveMedianBGS.h"
+#include "opencv2/core/types_c.h"
 
 #if CV_MAJOR_VERSION >= 2 && CV_MAJOR_VERSION <= 3
 
@@ -8,7 +9,7 @@ void AdaptiveMedianBGS::Initalize(const BgsParams& param)
 {
   m_params = (AdaptiveMedianParams&)param;
   m_median = cvCreateImage(cvSize(m_params.Width(), m_params.Height()), IPL_DEPTH_8U, 3);
-  cvSet(m_median.Ptr(), CV_RGB(BACKGROUND, BACKGROUND, BACKGROUND));
+  cvSet(m_median.Ptr(), cvScalar(CV_RGB(BACKGROUND, BACKGROUND, BACKGROUND)));
 }
 
 RgbImage* AdaptiveMedianBGS::Background()