一个很简单的实验,2分类,训练集为20张图片,测试集合为500张图片。
折腾了很久才弄好了调用结果,但是结果不是太好,不如SVM。
double classifyByKNN( const cv::Mat& trainData, const cv::Mat& trainResponse, const cv::Mat& testData, const cv::Mat& testResponse )
{
const int C = 10001;
const int K = 15; // 参数K的取值
int i, j, k;
float response;
double accuracy = 0;
float _sample[C];
CvMat sample = cvMat( 1, C, CV_32FC1, _sample );
//CvMat* traincm = cvCreateMat(trainData.rows, trainData.cols, CV_32FC1);
//CvMat* testcm = cvCreateMat(testData.rows, testData.cols, CV_32FC1);
CvMat* traincm = &trainData.operator CvMat();
CvMat* testcm = &testData.operator CvMat();
CvMat* trainre = &trainResponse.operator CvMat();
CvMat* nearests = &testResponse.operator CvMat();
//CvKNearest( const CvMat* _train_data, const CvMat* _responses, const CvMat* _sample_idx=0, bool _is_regression=false