因为项目需要,所以得用c++开发一套稀疏编码的分类算法,期间遇到很多小问题记录一下。
1.训练完的字典,对其进行稀疏表示后,需用分类器进行分类,如果用残差最小的方法错误率很高,因为,字典进过训练后表达能力变强,所以这一类的一小部分可以表达另一类的部分,所以需要用分类器分类
2.opencv SVM中遇到错误
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
遇到这种情况可以检查下
// check parameter types and sizes
if( !CV_IS_MAT(train_data) || CV_MAT_TYPE(train_data->type) != CV_32FC1 )
CV_ERROR( CV_StsBadArg, "train data must be floating-point matrix" );
我把数据类型改成cv_32FC1后就没有错误了