错误:OpenCV,SVM列车中的浮点异常

时间:2015-10-28 23:19:56

标签: opencv svm opencv3.0

我正在尝试使用HOG特征提取器的描述符值来训练svm。

//pRow, nRow, pCol, nCol are positive and negative columns and rows.
Mat posneg_descriptor_mat( pRow + nRow, pCol, CV_32FC1 );

// data is descriptor values
memcpy(posneg_descriptor_mat.data, pMat.data, sizeof(float) * pMat.cols * pMat.rows );
int startP = sizeof(float) * pMat.cols * pMat.rows;
memcpy(&(posneg_descriptor_mat.data[ startP ]), nMat.data, sizeof(float) * nMat.cols * nMat.rows );
//data labeling
Mat labels( pRow + nRow, 1, CV_32FC1, Scalar(-1.0) );
    labels.rowRange( 0, pRow ) = Scalar( 1.0 );


Ptr<SVM> svm = SVM::create();
svm->setType(SVM::C_SVC);
svm->setKernel(SVM::LINEAR);
svm->setTermCriteria(TermCriteria(TermCriteria::MAX_ITER, 10000, 1e-6));

Ptr<TrainData> td =TrainData::create(posneg_descriptor_mat, ROW_SAMPLE, labels);

当代码位于错误(浮点异常(核心转储))下面的行中时:

svm->trainAuto(td);

1 个答案:

答案 0 :(得分:0)

CV_32FC1更改为CV_32SC1解决了这个问题。似乎response不能是float