你好我正在进行人员识别,我想从多类SVM分类中获得每个测试样本(图像)的分数。我正在使用c#和EmguCv。 任何帮助将不胜感激。
答案 0 :(得分:0)
唯一方法 - 减少OpenCV并从中获得所有投票。你可以在文件“svm.cpp”中看到它。 我在预测函数中添加了这段代码:
bool Yes = false;
if( _results.needed() )
{
_results.create(class_count+1, 1, samples.type());
results = _results.getMat();
Yes = true;
}
else
{
CV_Assert( nsamples == 1 );
results = Mat(1, 1, CV_32F, &result);
}
PredictBody invoker(this, samples, results, returnDFVal);
if( nsamples < 10 )
invoker(Range(0, nsamples));
else
parallel_for_(Range(0, nsamples), invoker);
if (Yes)
{
result = results.at<float>(class_count);
}
return result;
这段代码在PredictBody中
if (results->cols + results->rows > 2)
{
for (int jk = 0; jk < class_count; jk++)
results->at<float>(jk) = (float)vote[jk];
results->at<float>(class_count) = result;
}
else
results->at<float>(si) = result;
所以,我从opencv收回所有需要的投票。 但是,正如您从svm.cpp中看到的那样,没有正常的方法可以做到这一点。