Merge pull request #14332 from LaurentBerger:loadknearest

pull/14366/head
Alexander Alekhin 6 years ago
commit 96610c7ee1
  1. 8
      modules/ml/include/opencv2/ml.hpp
  2. 13
      modules/ml/misc/python/test/test_knearest.py
  3. 11
      modules/ml/src/knearest.cpp

@ -505,6 +505,14 @@ public:
The static method creates empty %KNearest classifier. It should be then trained using StatModel::train method.
*/
CV_WRAP static Ptr<KNearest> create();
/** @brief Loads and creates a serialized knearest from a file
*
* Use KNearest::save to serialize and store an KNearest to disk.
* Load the KNearest from this file again, by calling this function with the path to the file.
*
* @param filepath path to serialized KNearest
*/
CV_WRAP static Ptr<KNearest> load(const String& filepath);
};
/****************************************************************************************\

@ -0,0 +1,13 @@
#!/usr/bin/env python
import cv2 as cv
from tests_common import NewOpenCVTests
class knearest_test(NewOpenCVTests):
def test_load(self):
k_nearest = cv.ml.KNearest_load(self.find_file("ml/opencv_ml_knn.xml"))
self.assertFalse(k_nearest.empty())
self.assertTrue(k_nearest.isTrained())
if __name__ == '__main__':
NewOpenCVTests.bootstrap()

@ -515,6 +515,17 @@ Ptr<KNearest> KNearest::create()
return makePtr<KNearestImpl>();
}
Ptr<KNearest> KNearest::load(const String& filepath)
{
FileStorage fs;
fs.open(filepath, FileStorage::READ);
Ptr<KNearest> knearest = makePtr<KNearestImpl>();
((KNearestImpl*)knearest.get())->read(fs.getFirstTopLevelNode());
return knearest;
}
}
}

Loading…
Cancel
Save