我正在使用 OpenCV 2.4.12
predictedValues = knn.find_nearest(samples, k, results, neighborResponses, dists);
这一行基本上就得到了knn的结果。现在我的问题是如何评估结果?有什么函数可以使用吗?否则我是否需要将 predicted
与 results
Mat 进行比较?
谢谢
Ps.感谢 guneykayim,我需要添加一些代码以使我的问题更清楚。我有不止 1 个 vector
Mat predicted = new Mat(results.rows(), 1, CvType.CV_32F);
float predictedValue;
for (int i = 0; i < testData.rows(); i++)
{
final Mat samples = testData.row(i);
//predicted.<Float>at(i,0) = knn.find_nearest(samples, k);
predictedValue = knn.find_nearest(samples, k, results, neighborResponses, dists); //TODO: wie mat dists aufsetzen-10?
predicted.put(i, 1, predictedValue);
}
最佳答案
您共享的文档说:
If only a single input vector is passed, all output matrices are optional and the predicted value is returned by the method.
因此,如果您的 samples
对象有多个 vector ,您的结果将与 results
对象一起返回,您不需要 predictedValues
目的。但是,如果您的输入只是一个 vector ,那么您不需要 results
对象,您可以使用函数返回值,在您的情况下为 predictedValues
。
P.S. 该函数返回仅一个 float
值,而不是多个值。
关于java - K近邻OpenCV算法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34022063/