【发布时间】:2017-09-03 14:32:36
【问题描述】:
我有vector<vector<float> > 大小的特征 1800*160 现在我需要在上面训练 svm,我尝试使用 OPENCV SVM 但在调试模式下 svm->train 返回 false 并在发布模式下引发异常:
Exception thrown at 0x00007FFF587AC387 (vcruntime140.dll):Access violation reading location 0x00000048B7FED000.
我的代码:
void Classifier::trainSVM(vector<vector<float> > data,cv::Mat Lable)
{
// Train the SVM
cv::Ptr<cv::ml::SVM> svm = cv::ml::SVM::create();
svm->setType(cv::ml::SVM::C_SVC);
svm->setKernel(cv::ml::SVM::LINEAR);
svm->setTermCriteria(cv::TermCriteria(cv::TermCriteria::MAX_ITER, 50000, 1e-6));
cv::Mat trainingData = cv::Mat(data.size(), 160, CV_32FC1, data.data());
std::cout << "\nBegan Training Svm in vector faces.";
bool trained = svm->train(trainingData, cv::ml::ROW_SAMPLE, Lable);
if (trained)
svm->save("svm_data.xml");
std::cout << "\nEnd Training Svm in vector faces.";
}
【问题讨论】:
-
您是否在调试模式下链接发布库?