Каково точное значение первого параметра, который принимает класс KNearest в OpenCV, CvMat* trainData
?
Должен ли я пройти CvMat*
с расположением центроидов классов или другой информации?
Как сказал Вот, это кеш всех обучающих сэмплов, т.е. вам нужен начальный набор. После этого вы можете запросить все новые векторы, которые являются ближайшими в обучающем наборе. kNN является классификатором (именно поэтому он наследуется от CvStatModel. Типичный пример: у вас есть обучающий набор функций, рассчитанный на основе того, что вы хотите, говорит функции ORB из набора данных изображений (но не ограничиваясь ключевыми точками!), и вы хотите для неизвестного изображения, что это такое. Вы тренируете свой kNN с помощью обучающего набора (то есть: функции, вычисленные для каждого изображения, которое вы знаете в классе), вы вычисляете функции на вашем неизвестном изображении и находите k ближайших соседей в обучающий набор (с помощью find_nearest). Вы смотрите на метку каждого из ближайших соседей, и метка большинства, вероятно, является классом для вашего изображения =>, которое вы определили и представили. Это просто типичное использование kNN и есть многие другие!
Если вы ищете решение для кластеризации группы данных в K-классе (то есть: для набора векторов, вы хотите разделить на k групп), посмотрите на kmeans.
Других решений пока нет …