c++ - 训练 SVM 时出现内存异常
问题描述
为了训练 SVM 分类器,我使用从不同图像中提取的特征(每个图像都有多个特征 =!其他图像,因为我使用 SLIC 超像素并且从每个区域中我提取 20 个特征)在准备好 TraingMatData 和 LabelsMat 之后,我收到了这个带有通知的错误: Microsoft C++ 异常:内存位置 0x000000E5176E2740 处的 cv::Exception。我无法理解我的代码有什么问题,这是我的代码,我正在等待您的帮助。
int main()
{
/// training
cv::Mat image;
//load the features from files
Mat trainingDataMat(47,27000, CV_32FC1);
float features[1350][20];
float labels[47] = {-1.0,-1.0,-1.0,-1.0,-1.0,-1.0,-1.0,-1.0,... i delet the rest of them};
vector<int> size;
for (int i = 1; i < 48; i++) {
vector<float> numbers;
//Mat features(1200, 20, CV_32FC1);
string filename = "D:\\mémoire\\training\\trainingData\\featuers";
filename = filename + std::to_string(i);
filename = filename + ".txt";
int size_e = 0;
//read(numbers, filename);
ifstream in(filename);
float number;
string aa;
while (in.good()) {
getline(in, aa, ',');
number = strtod(aa.c_str(), NULL);
numbers.push_back(number);
size_e = size_e + 1;
//features.push_back(number);
}
in.close();
size.push_back(size_e);
int pp = numbers.size()/ 20;
int d = 0;
for (int p = 0; p < 1350; p++) {
for (int p1 = 0; p1 < 20; p1++) {
if (pp <= d) {
features[p][p1] = 0;
}
else {
//features.at<uchar>(p, p1) = numbers[d];
features[p][p1] = numbers[d];
d++;
}
}
}
cv::Mat A(1350, 20, CV_32FC1, features);
trainingDataMat.push_back(A.reshape(1, 1));
}
Mat labelsMat(47, 1, CV_32FC1, labels);
//////////////////////////////////////////////////////////////////////////////////////////////////////
//seting the SVM
Ptr<ml::SVM> svm = ml::SVM::create();
// edit: the params struct got removed,
svm->setType(ml::SVM::C_SVC);
svm->setKernel(ml::SVM::RBF);
svm->setGamma(100);
//Mat trainData; // one row per feature
svm->train(trainingDataMat, ml::ROW_SAMPLE, labelsMat);
// ...
解决方案
推荐阅读
- javascript - 使用 CSSTransitionGroup 和 React-Router v6 动画路由过渡
- windows - 通过命令行在管理员组中创建用户,但不依赖操作系统语言
- vulkan - Vulkan 渲染到纹理
- angular - 具有多种可能对象类型的接口类型数组
- ruby - 有没有办法像在 Ruby 中一样从字符串插值中使用 Elixir 中的动态函数名称?
- java - 如何替换不在两个字符之间的所有字符串?
- timestamp - WSO2-IS-5.6:LastPasswordUpdate 和 lastLogin 采用纪元格式而不是 ISO
- php - 请求已发送,但我在控制台中收到错误并且不运行脚本
- php - 如何使用当前日期在 codeigniter 上获取数据?
- javascript - Vue多选不删除选项