gpt4 book ai didi

c++ - 如何为SVM训练OpenCV3形成数据

转载 作者:行者123 更新时间:2023-11-28 06:07:10 26 4
gpt4 key购买 nike

我正在尝试编写用于在 OpenCV3 中训练用于图像分类的 svm 分类器的实用程序。但是我在训练过程中出现浮点异常(核心转储)错误。

我的主要问题是我不知道,我不确定如何形成训练数据来提供 svm.train 方法。

这是形成训练数据的代码。

TrainingDataType SVMTrainer::prepareDataForTraining() {

cv::Mat trainingData(m_numOfAllImages, 28*28, CV_32FC1);
cv::Mat trainingLabels(m_numOfAllImages, 1, CV_32FC1);

int rowNum = 0;


// Item is pair of classId (int) and vector of images.
for(auto item : m_data){
int classId = item.first;
for(auto item1 : item.second){
Mat temp = item1.reshape(1,1);
temp.copyTo(trainingData.row(rowNum));

trainingLabels.at<float>(rowNum) = item.first;
++rowNum;
}
}

return cv::ml::TrainData::create(trainingData,
cv::ml::SampleTypes::ROW_SAMPLE,
trainingLabels) ;

}

void SVMTrainer::train(std::string& configPath){
// Read and store images in memory.
formClassifierData(configPath);

m_classifier = cv::ml::SVM::create();
// Training parameters:
m_classifier->setType(cv::ml::SVM::C_SVC);
m_classifier->setKernel(cv::ml::SVM::POLY);
m_classifier->setGamma(3);
m_classifier->setDegree(3);

TrainingDataType trainData = prepareDataForTraining();

m_classifier->trainAuto(trainData);

}

所有图片均已准备好,尺寸为 28*28,黑白。

而真正的火车调用就是在这个方法中

谁能告诉我我做错了什么。

谢谢,

最佳答案

很简单。将标签格式更改为 CV_32SC1。它肯定会解决您在 opencv 3.0 ml 中的问题。

关于c++ - 如何为SVM训练OpenCV3形成数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32168786/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com