diff --git a/FrameProcessor.cpp b/FrameProcessor.cpp
index fb9445ce901909dee30c1c49021ea1834f43e531..ca70d4692e78caa3411cbb2fd5a41c83aea1911a 100644
--- a/FrameProcessor.cpp
+++ b/FrameProcessor.cpp
@@ -60,7 +60,7 @@ namespace bgslibrary
     if (enableAdaptiveBackgroundLearning)
       adaptiveBackgroundLearning = new AdaptiveBackgroundLearning;
 
-#if CV_MAJOR_VERSION >= 2 && CV_MINOR_VERSION >= 4 && CV_SUBMINOR_VERSION >= 3
+#if CV_MAJOR_VERSION == 2 && CV_MINOR_VERSION >= 4 && CV_SUBMINOR_VERSION >= 3
     if (enableGMG)
       gmg = new GMG;
 #endif
@@ -215,7 +215,7 @@ namespace bgslibrary
     if (enableAdaptiveBackgroundLearning)
       process("AdaptiveBackgroundLearning", adaptiveBackgroundLearning, img_preProcessor, img_adaptiveBackgroundLearning);
 
-#if CV_MAJOR_VERSION >= 2 && CV_MINOR_VERSION >= 4 && CV_SUBMINOR_VERSION >= 3
+#if CV_MAJOR_VERSION == 2 && CV_MINOR_VERSION >= 4 && CV_SUBMINOR_VERSION >= 3
     if (enableGMG)
       process("GMG", gmg, img_preProcessor, img_gmg);
 #endif
@@ -342,7 +342,7 @@ namespace bgslibrary
 #endif
       foregroundMaskAnalysis->process(frameNumber, "MixtureOfGaussianV2", img_mixtureOfGaussianV2);
       foregroundMaskAnalysis->process(frameNumber, "AdaptiveBackgroundLearning", img_adaptiveBackgroundLearning);
-#if CV_MAJOR_VERSION >= 2 && CV_MINOR_VERSION >= 4 && CV_SUBMINOR_VERSION >= 3
+#if CV_MAJOR_VERSION == 2 && CV_MINOR_VERSION >= 4 && CV_SUBMINOR_VERSION >= 3
       foregroundMaskAnalysis->process(frameNumber, "GMG", img_gmg);
 #endif
 #if CV_MAJOR_VERSION >= 3
@@ -508,7 +508,7 @@ namespace bgslibrary
     if (enableDPAdaptiveMedian)
       delete dpAdaptiveMedian;
 
-#if CV_MAJOR_VERSION >= 2 && CV_MINOR_VERSION >= 4 && CV_SUBMINOR_VERSION >= 3
+#if CV_MAJOR_VERSION == 2 && CV_MINOR_VERSION >= 4 && CV_SUBMINOR_VERSION >= 3
     if (enableGMG)
       delete gmg;
 #endif
@@ -576,7 +576,7 @@ namespace bgslibrary
 #endif
     cvWriteInt(fs, "enableMixtureOfGaussianV2", enableMixtureOfGaussianV2);
     cvWriteInt(fs, "enableAdaptiveBackgroundLearning", enableAdaptiveBackgroundLearning);
-#if CV_MAJOR_VERSION >= 2 && CV_MINOR_VERSION >= 4 && CV_SUBMINOR_VERSION >= 3
+#if CV_MAJOR_VERSION == 2 && CV_MINOR_VERSION >= 4 && CV_SUBMINOR_VERSION >= 3
     cvWriteInt(fs, "enableGMG", enableGMG);
 #endif
 #if CV_MAJOR_VERSION >= 3
@@ -642,7 +642,7 @@ namespace bgslibrary
 #endif
     enableMixtureOfGaussianV2 = cvReadIntByName(fs, 0, "enableMixtureOfGaussianV2", false);
     enableAdaptiveBackgroundLearning = cvReadIntByName(fs, 0, "enableAdaptiveBackgroundLearning", false);
-#if CV_MAJOR_VERSION >= 2 && CV_MINOR_VERSION >= 4 && CV_SUBMINOR_VERSION >= 3
+#if CV_MAJOR_VERSION == 2 && CV_MINOR_VERSION >= 4 && CV_SUBMINOR_VERSION >= 3
     enableGMG = cvReadIntByName(fs, 0, "enableGMG", false);
 #endif
 #if CV_MAJOR_VERSION >= 3
diff --git a/FrameProcessor.h b/FrameProcessor.h
index 7bf688e0ed44c8fc5ec9879d934a270ad1d7c623..9f59f4fd6f52372e13a24dc9140a8d18b3143dcb 100644
--- a/FrameProcessor.h
+++ b/FrameProcessor.h
@@ -69,7 +69,7 @@ namespace bgslibrary
     AdaptiveBackgroundLearning* adaptiveBackgroundLearning;
     bool enableAdaptiveBackgroundLearning;
 
-#if CV_MAJOR_VERSION >= 2 && CV_MINOR_VERSION >= 4 && CV_SUBMINOR_VERSION >= 3
+#if CV_MAJOR_VERSION == 2 && CV_MINOR_VERSION >= 4 && CV_SUBMINOR_VERSION >= 3
     cv::Mat img_gmg;
     GMG* gmg;
     bool enableGMG;
diff --git a/package_bgs/GMG.cpp b/package_bgs/GMG.cpp
index 19bd8abbbf858a3c9d893e03f7a34dc7f557ebb0..8fdc5a443c4a53ab41a9b97a32ec133cdcb02e80 100644
--- a/package_bgs/GMG.cpp
+++ b/package_bgs/GMG.cpp
@@ -16,7 +16,7 @@ along with BGSLibrary.  If not, see <http://www.gnu.org/licenses/>.
 */
 #include "GMG.h"
 
-#if CV_MAJOR_VERSION == 2
+#if CV_MAJOR_VERSION == 2 && CV_MINOR_VERSION >= 4 && CV_SUBMINOR_VERSION >= 3
 
 using namespace bgslibrary::algorithms;
 
diff --git a/package_bgs/GMG.h b/package_bgs/GMG.h
index 1b4af30b234f954ee80d5fa8554b0e945ba21976..0ff89c75a40cba67dfe3b0738b061dcf4f2adf92 100644
--- a/package_bgs/GMG.h
+++ b/package_bgs/GMG.h
@@ -17,7 +17,7 @@ along with BGSLibrary.  If not, see <http://www.gnu.org/licenses/>.
 #pragma once
 
 #include "opencv2/core/version.hpp"
-#if CV_MAJOR_VERSION == 2
+#if CV_MAJOR_VERSION == 2 && CV_MINOR_VERSION >= 4 && CV_SUBMINOR_VERSION >= 3
 
 #include "IBGS.h"
 
diff --git a/wrapper_python/bgslibrary_module.cpp b/wrapper_python/bgslibrary_module.cpp
index 893591ac2eaa695c44f6916480bd2f67b9653f67..ef09aae0da60f8be58f1375f7d3f1ceb56011c3e 100644
--- a/wrapper_python/bgslibrary_module.cpp
+++ b/wrapper_python/bgslibrary_module.cpp
@@ -207,7 +207,7 @@ PYBIND11_MODULE(bgs, m)
 		.def("getBackgroundModel", &LOBSTER::getBackgroundModel)
 		;
 
-#if CV_MAJOR_VERSION == 2
+#if CV_MAJOR_VERSION == 2 && CV_MINOR_VERSION >= 4 && CV_SUBMINOR_VERSION >= 3
 	py::class_<MixtureOfGaussianV1>(m, "MixtureOfGaussianV1")
     .def(py::init<>())
 		.def("apply", &MixtureOfGaussianV1::apply)