您可能知道,OpenCV 3中的许多内容都发生了变化.在之前的OpenCV版本中,我曾经这样做过:
Mat trainData(classes * samples, ImageSize, CV_32FC1);
Mat trainClasses(classes * samples, 1, CV_32FC1);
KNNLearning(&trainData, &trainClasses); //learning function
KNearest knearest(trainData, trainClasses); //creating
//loading input image
Mat input = imread("input.jpg");
//digital recognition
learningTest(input, knearest);//test
Run Code Online (Sandbox Code Playgroud)
我还找到了一个如何弄清楚它的例子,但我在创建函数中仍然有错误:
Ptr<KNearest> knearestKdt = KNearest::create(ml::KNearest::Params(10, true, INT_MAX, ml::KNearest::KDTREE));
knearestKdt->train(trainData, ml::ROW_SAMPLE, trainLabels);
knearestKdt->findNearest(testData, 4, bestLabels);
Run Code Online (Sandbox Code Playgroud)
能否请您提供相关信息,如何正确地重写KNearest到openCV 3的实际代码?