项目需要用到支持向量机对提取到的特征向量进行分类,在使用Opencv的CvSVM时遇到:
OpenCV Error: Bad argument (train data must be floating-point matrix) in cvCheckTrainData, file ..\..\..\src\opencv\modules\ml\src\inner_functions.cpp, line 857
Exception in thread "main" CvException
CvMat traindata在定义时确实是 CV_32FC1类型,所以一直认为traindata的类型没有错啊,明明是定义的32位浮点型;
但经过单步后,发现CvMat traindata在读取.xml文件后自动转换成了CV_64FC1类型,导致执行svm.train时出错!
发现后,把traindata强制转化成CV_32FC1类型后,顺利执行svm.train()。
太隐蔽了,搞了一天....路还很长