我想使用OpenCV的KNN算法将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数据结构中的训练数据。
我很困惑如何将训练数据的文本文件转换为Mat。如果有人能帮助我,我会非常感激。
答案 0 :(得分:0)
基本上,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
方法