【发布时间】:2016-12-05 04:07:10
【问题描述】:
我使用以下代码来训练一个 opencv svm:
cv::SVMParams params;
cv::SVM svm;
params.svm_type = cv::SVM::C_SVC;
params.kernel_type = cv::SVM::LINEAR;
params.term_crit = cv::TermCriteria(CV_TERMCRIT_ITER, 100, 1e-6);
svm.train(trainData, trainLabels, cv::Mat(), cv::Mat(), this->params);
trainData 在哪里:
std::vector<std::vector<float>> data;
// Do stuff and fill data vector
cv::Mat trainData(data.size(), data.at(0).size(), CV_32FC1);
for (int i = 0; i < data.size(); ++i)
for (int j = 0; j < data.at(0).size(); ++j)
trainData.at<float>(i, j) = data.at(i).at(j);
而trainLabels 是:
std::vector<unsigned> labels;
// Do stuff and fill labels
cv::Mat(labels);
但我有这个错误:
C:\builds\2_4_PackSlave-win32-vc12-shared\opencv\modules\ml\src\inner_functions.cpp:675:error: (-210) 函数 cvPreprocessCategoricalResponses 中不支持的响应类型
我以前从未见过,搜索时找不到。
【问题讨论】:
-
你是在问它是什么,或者它为什么存在,或者你如何解决它?
-
@VeniVidiVici 我猜他们都是,但感谢任何帮助。
-
函数
cvPreprocessCategoricalResponses在哪里? -
@VeniVidiVici 可能是opencv的功能,因为我的代码中没有这个功能
-
好吧,我傻了。问题是标签不能是
unsigned int的类型。原来它只支持int。我改成int,它可以工作了。