diff --git a/Code/UtilitiesAdapters/OpenCV/otbBoostMachineLearningModel.h b/Code/UtilitiesAdapters/OpenCV/otbBoostMachineLearningModel.h
index fc6dae54a2d01ffdcd64d0978802b68d809998a8..fa4f9be5c3a7b6da915e058bf58778e9957e3426 100644
--- a/Code/UtilitiesAdapters/OpenCV/otbBoostMachineLearningModel.h
+++ b/Code/UtilitiesAdapters/OpenCV/otbBoostMachineLearningModel.h
@@ -24,7 +24,8 @@
 #include "itkListSample.h"
 #include "otbMachineLearningModel.h"
 
-#include <opencv2/opencv.hpp>
+
+class CvBoost;
 
 namespace otb
 {
diff --git a/Code/UtilitiesAdapters/OpenCV/otbBoostMachineLearningModel.txx b/Code/UtilitiesAdapters/OpenCV/otbBoostMachineLearningModel.txx
index 3dec711f030dc5ea6c97f8cc5851eb92797d49ec..6c6cea7419aa48a2aeaf18f66fdc6d751b471980 100644
--- a/Code/UtilitiesAdapters/OpenCV/otbBoostMachineLearningModel.txx
+++ b/Code/UtilitiesAdapters/OpenCV/otbBoostMachineLearningModel.txx
@@ -21,6 +21,8 @@
 #include "otbBoostMachineLearningModel.h"
 #include "otbOpenCVUtils.h"
 
+#include <opencv2/opencv.hpp>
+
 namespace otb
 {
 
diff --git a/Code/UtilitiesAdapters/OpenCV/otbKNearestNeighborsMachineLearningModel.h b/Code/UtilitiesAdapters/OpenCV/otbKNearestNeighborsMachineLearningModel.h
index 5cfe8f899cce7f0a53aacc2b16e8a2319c150a4f..f94ef23a55633a7b9d126659c467e6067949ff04 100644
--- a/Code/UtilitiesAdapters/OpenCV/otbKNearestNeighborsMachineLearningModel.h
+++ b/Code/UtilitiesAdapters/OpenCV/otbKNearestNeighborsMachineLearningModel.h
@@ -24,7 +24,7 @@
 #include "itkListSample.h"
 #include "otbMachineLearningModel.h"
 
-#include <opencv2/opencv.hpp>
+class CvKNearest;
 
 namespace otb
 {
diff --git a/Code/UtilitiesAdapters/OpenCV/otbKNearestNeighborsMachineLearningModel.txx b/Code/UtilitiesAdapters/OpenCV/otbKNearestNeighborsMachineLearningModel.txx
index 4455c3838b5aa9aaf9cb67e14d654e50bdb89088..2ecdc832374b23c42c21f45ee4aef62b3bf93c5d 100644
--- a/Code/UtilitiesAdapters/OpenCV/otbKNearestNeighborsMachineLearningModel.txx
+++ b/Code/UtilitiesAdapters/OpenCV/otbKNearestNeighborsMachineLearningModel.txx
@@ -21,6 +21,8 @@
 #include "otbKNearestNeighborsMachineLearningModel.h"
 #include "otbOpenCVUtils.h"
 
+#include <opencv2/opencv.hpp>
+
 namespace otb
 {
 
diff --git a/Code/UtilitiesAdapters/OpenCV/otbRandomForestsMachineLearningModel.h b/Code/UtilitiesAdapters/OpenCV/otbRandomForestsMachineLearningModel.h
index 12a8e60c36ec829470d35f1da611db06a1213adf..9ed54c47b5996520b4c442c46fae501436d3428f 100644
--- a/Code/UtilitiesAdapters/OpenCV/otbRandomForestsMachineLearningModel.h
+++ b/Code/UtilitiesAdapters/OpenCV/otbRandomForestsMachineLearningModel.h
@@ -24,7 +24,7 @@
 #include "itkListSample.h"
 #include "otbMachineLearningModel.h"
 
-#include <opencv2/opencv.hpp>       // opencv general include file
+class CvRTrees;
 
 namespace otb
 {
@@ -170,10 +170,8 @@ public:
   //   return m_RFModel->getVarImportance();
   // }
 
-  float GetTrainError()
-  {
-    return m_RFModel->get_train_error();
-  }
+  float GetTrainError();
+
 protected:
   /** Constructor */
   RandomForestsMachineLearningModel();
diff --git a/Code/UtilitiesAdapters/OpenCV/otbRandomForestsMachineLearningModel.txx b/Code/UtilitiesAdapters/OpenCV/otbRandomForestsMachineLearningModel.txx
index 3e3990f68a3f213565c8c18bb7e36a89b02a2db9..c998795a3914a35f8372abd90ce266a95df20491 100644
--- a/Code/UtilitiesAdapters/OpenCV/otbRandomForestsMachineLearningModel.txx
+++ b/Code/UtilitiesAdapters/OpenCV/otbRandomForestsMachineLearningModel.txx
@@ -22,6 +22,7 @@
 
 #include "otbRandomForestsMachineLearningModel.h"
 #include "otbOpenCVUtils.h"
+#include <opencv2/opencv.hpp>       // opencv general include file
 
 namespace otb
 {
@@ -51,6 +52,14 @@ RandomForestsMachineLearningModel<TInputValue,TOutputValue>
   delete m_RFModel;
 }
 
+template <class TInputValue, class TOutputValue>
+float
+RandomForestsMachineLearningModel<TInputValue,TOutputValue>
+::GetTrainError()
+{
+  return m_RFModel->get_train_error();
+}
+
 /** Train the machine learning model */
 template <class TInputValue, class TOutputValue>
 void
diff --git a/Code/UtilitiesAdapters/OpenCV/otbSVMMachineLearningModel.h b/Code/UtilitiesAdapters/OpenCV/otbSVMMachineLearningModel.h
index 74e232955caf235aca42638a8ba648bf77c811dc..f10a448154950590c6aa7d8d0d4f6a85e65f0083 100644
--- a/Code/UtilitiesAdapters/OpenCV/otbSVMMachineLearningModel.h
+++ b/Code/UtilitiesAdapters/OpenCV/otbSVMMachineLearningModel.h
@@ -25,7 +25,7 @@
 #include "itkListSample.h"
 #include "otbMachineLearningModel.h"
 
-#include <opencv2/opencv.hpp>       // opencv general include file
+class CvSVM;
 
 namespace otb
 {
diff --git a/Code/UtilitiesAdapters/OpenCV/otbSVMMachineLearningModel.txx b/Code/UtilitiesAdapters/OpenCV/otbSVMMachineLearningModel.txx
index a532767646ca9d1a79db794a206c1b65b39ed166..b4563da2fbb796691c4caba2941ba92b4683345e 100644
--- a/Code/UtilitiesAdapters/OpenCV/otbSVMMachineLearningModel.txx
+++ b/Code/UtilitiesAdapters/OpenCV/otbSVMMachineLearningModel.txx
@@ -21,6 +21,7 @@
 #include <fstream>
 #include "otbSVMMachineLearningModel.h"
 #include "otbOpenCVUtils.h"
+#include <opencv2/opencv.hpp>       // opencv general include file
 
 namespace otb
 {