Я хочу использовать алгоритм KNN OpenCV для классификации 4 функций в один из двух классов. В текстовом файле мои тренировочные данные представлены в следующем формате:
feature_1, feature_2, feature_3, feature_4, класс
где feature_1, feature_3, feature_4 и class являются целыми числами, а feature_2 имеет тип float. Первая строка текстового файла содержит заголовки для каждой функции.
Тем не менее, документация OpenCV (http://docs.opencv.org/modules/ml/doc/k_nearest_neighbors.html) утверждает, что функция поезда требует данных обучения в структуре данных Mat.
Я запутался в том, как я могу преобразовать свой текстовый файл обучающих данных в мат. Если кто-то может помочь мне с этим, я был бы очень признателен.
По сути, OpenCV реализует CvMLData
который может читать csv
файлы (и ваш файл — файл, разделенный запятыми).
согласно документации: http://docs.opencv.org/modules/ml/doc/mldata.html
Создав объект CvMLData, вы можете использовать метод read_csv:
read_csv(const char* filename)
загрузить его, а затем использовать get_values()
получить указатель на входные данные как Mat
а также get_responses()
чтобы получить указатель на метки как Mat
Чтобы указать, какой столбец считается «ответом» (метка), используйте set_response_idx
метод
Других решений пока нет …