在OpenCV {@ 1}}中使用KNearest类的第一个参数的确切含义是什么?
我是否必须传递CvMat* trainData
以及类的质心位置或其他信息?
答案 0 :(得分:3)
正如所说的here,它是所有训练样本的缓存,即:你需要一个初始集。之后,您可以请求训练集中最接近的所有新向量。 kNN是一个分类器(这就是它继承自CvStatModel的原因。一个典型的用途是:你有一套根据你想要的特征计算的特征,从图像数据集(但不仅限于关键点!)中说出ORB特征,你想要知道一个未知的图像,它是什么。你用训练集训练你的kNN(即:你知道这个类的每个图像上计算的特征),你计算未知图像上的特征,你找到k个最近的邻居训练集(使用find_nearest)。你看看每个最近邻居的标签,并且多数标签可能是你图像的类=>你已经识别和图像。这只是kNN的一个典型用途还有很多其他人!
如果您正在寻找将一组数据聚类到K类的解决方案(例如:对于一组向量,您希望将分区划分为k个组),请查看kmeans。