OpenCV SVM::predict() 结果集总是给出相同的最后一个值

OpenCV SVM::predict() results set always gives same last value

为预测函数的输出创建Mat

    Mat results = Mat::zeros(200,1,CV_32FC1);  

为预测函数提供特征集和结果 Mat 我想要返回 class 标签。

    svm.predict(features,results);  

然后结果垫中的最后一个(或本例中的第 200 个)class 标签将始终给出相同的奇怪数字。

    qDebug() << k<<":" << results.at<float>(200)

200 : 1.4013e-45

svm 接受了 classes 1 和 -1 的训练。其余 class 标签正确返回,所有标签也准确无误。无论结果集或训练集的大小如何,我都会得到这个奇怪的最后 class 标签。

基于 0 的索引。 200 个元素的数组中的最后一个值是第 199 个元素。使用 at<float>(200),您正在读取数组末尾之后的垃圾内存。