-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathknn.hpp
28 lines (20 loc) · 819 Bytes
/
knn.hpp
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
#pragma once
//----------------------------------------------------------------------------
//----------------------------------------------------------------------------
void trainKnn(const cv::Ptr<cv::ml::TrainData> &dataset)
{
auto k_nearest = cv::ml::KNearest::create();
k_nearest->setDefaultK(5);
k_nearest->setIsClassifier(true);
k_nearest->train(dataset);
k_nearest->save("KNN.xml");
}
//----------------------------------------------------------------------------
//----------------------------------------------------------------------------
float testKnn(const cv::Ptr<cv::ml::TrainData> &dataset)
{
auto k_nearest = cv::ml::KNearest::load("KNN.xml");
std::vector<int32_t> predictions;
auto error = k_nearest->calcError(dataset, true, predictions);
return error;
}