Add Ptr KNearest::load and python binding

This commit is contained in:
LaurentBerger 2019-04-15 15:51:30 +02:00
parent c9a76ede94
commit 621e3eaed8
3 changed files with 32 additions and 0 deletions

View File

@ -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);
};
/****************************************************************************************\

View File

@ -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()

View File

@ -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;
}
}
}