From 15793b1301c54685ff94e5eae7f03195014ac3a1 Mon Sep 17 00:00:00 2001
From: ahb <andreas.bihlmaier@gmx.de>
Date: Sat, 5 Dec 2015 12:48:02 +0100
Subject: [PATCH 1/2] add TestData::getTestSamples()

---
 modules/ml/include/opencv2/ml.hpp | 6 ++++++
 1 file changed, 6 insertions(+)

diff --git a/modules/ml/include/opencv2/ml.hpp b/modules/ml/include/opencv2/ml.hpp
index 7acce7f33c..da0cea8b9d 100644
--- a/modules/ml/include/opencv2/ml.hpp
+++ b/modules/ml/include/opencv2/ml.hpp
@@ -224,6 +224,12 @@ public:
     CV_WRAP virtual void setTrainTestSplitRatio(double ratio, bool shuffle=true) = 0;
     CV_WRAP virtual void shuffleTrainTest() = 0;
 
+    CV_WRAP Mat getTestSamples() const {
+        Mat idx = getTestSampleIdx();
+        Mat samples = getSamples();
+        return idx.empty() ? Mat() : getSubVector(samples, idx);
+    }
+
     CV_WRAP static Mat getSubVector(const Mat& vec, const Mat& idx);
 
     /** @brief Reads the dataset from a .csv file and returns the ready-to-use training data.

From 54abb83c82e5f524615128b86b3eb4dc364eb0ff Mon Sep 17 00:00:00 2001
From: Maksim Shabunin <maksim.shabunin@itseez.com>
Date: Fri, 12 Feb 2016 12:32:26 +0300
Subject: [PATCH 2/2] ml: moved getTestSamples implementation to src

---
 modules/ml/include/opencv2/ml.hpp | 7 ++-----
 modules/ml/src/data.cpp           | 7 +++++++
 2 files changed, 9 insertions(+), 5 deletions(-)

diff --git a/modules/ml/include/opencv2/ml.hpp b/modules/ml/include/opencv2/ml.hpp
index da0cea8b9d..0b9026950e 100644
--- a/modules/ml/include/opencv2/ml.hpp
+++ b/modules/ml/include/opencv2/ml.hpp
@@ -224,11 +224,8 @@ public:
     CV_WRAP virtual void setTrainTestSplitRatio(double ratio, bool shuffle=true) = 0;
     CV_WRAP virtual void shuffleTrainTest() = 0;
 
-    CV_WRAP Mat getTestSamples() const {
-        Mat idx = getTestSampleIdx();
-        Mat samples = getSamples();
-        return idx.empty() ? Mat() : getSubVector(samples, idx);
-    }
+    /** @brief Returns matrix of test samples */
+    CV_WRAP Mat getTestSamples() const;
 
     CV_WRAP static Mat getSubVector(const Mat& vec, const Mat& idx);
 
diff --git a/modules/ml/src/data.cpp b/modules/ml/src/data.cpp
index a1608e3984..ad652568c7 100644
--- a/modules/ml/src/data.cpp
+++ b/modules/ml/src/data.cpp
@@ -50,6 +50,13 @@ static const int VAR_MISSED = VAR_ORDERED;
 
 TrainData::~TrainData() {}
 
+Mat TrainData::getTestSamples() const
+{
+    Mat idx = getTestSampleIdx();
+    Mat samples = getSamples();
+    return idx.empty() ? Mat() : getSubVector(samples, idx);
+}
+
 Mat TrainData::getSubVector(const Mat& vec, const Mat& idx)
 {
     if( idx.empty() )