openCV 中的 SVM 抛出"cv::Exception at memory location"
SVM in openCV throws "cv::Exception at memory location"
我正在尝试使用SVM、openCV、C++和Visual Studio 2008(mfc应用程序)创建一个简单的OCR应用程序。
我的训练样本是机器打印数字(0-9)的二进制图像。我想使用DAGSVM来解决这个多类问题。所以我需要创建45个SVM,每个SVM都是2类的SVM(SVM(0,1),SVM(0,2)。。。SVM(8,9))。
事情进展如下:
SVM的参数:
CvSVMParams params;
params.svm_type = CvSVM::C_SVC;
params.kernel_type = CvSVM::LINEAR;
params.term_crit = cvTermCriteria(CV_TERMCRIT_ITER, 100, 1e-6);
第i类训练图像的数据存储在矩阵trainData[i]中(每行是28x28图像的像素,这意味着矩阵具有784列)。在训练每个SVM时,我创建了2个矩阵,称为curTrainData&curTrainLabel。
for (int i = 0; i < 9; i++)
for (int j = i+1; j < 10; j++)
{
curTrainData.create(trainData[i].rows + trainData[j].rows, 784, CV_32FC1);
curTrainLabel.create(curTrainData.rows, 1, CV_32FC1);
// merge 2 matrix: trainData[i] & trainData[j]
for (int k = 0; k < trainData[i].rows; k++)
{
curTrainLabel.at<float>(k, 0) = 1.0; // class of digit i
for (int l = 0; l < 784; l++)
curTrainData.at<float>(k,l) = trainData[i].at<float>(k,l);
}
for (int k = 0; k < trainData[j].rows; k++)
{
curTrainLabel.at<float>(k + trainData[i].rows, 0) = -1.0; // class of digit j
for (int l = 0; l < 784; l++)
curTrainData.at<float>(k + trainData[i].rows,l) = trainData[j].at<float>(k,l);
}
svms[i][j].train(curTrainData, curTrainLabel, Mat(), Mat(), params);
}
我在调用svms[I][j].train时出错…。完整错误为:
Unhandled exception at 0x75b5d36f in svm.exe: Microsoft C++ exception: cv::Exception at memory location 0x0022af8c..
说实话,我不完全理解openCV中实现的SVM,也找不到任何它们处理图像中对象的例子。
如果有人能告诉我哪里出了问题,我真的很感激
更新09/03:我弄错了。错误来自:
str.Format(_T("Resultstrained_%d_%d.xml"), i, j);
svms[i][j].save(CT2A(str));
str是一个CString变量。
即使我改为:,它仍然存在
svms[i][j].save("Resultstrained.xml");
我已经创建了文件夹Results,其他文件都写得很好(方法fopen()、imwrite()…的文件)。我不知道为什么当涉及到svm的这种保存方法时,我不能添加文件夹。
如果使用反斜杠"\",则必须使用"\\"(或者可以使用前斜杠"/")。
相关文章:
- 为重写std::exception的库生成swig接口时出错
- Python ctype 'c_char_p' Memory Leak
- 什么是 std::exception::what() 以及为什么要使用它?
- 链表"exception thrown"
- 为什么程序员同时使用 std::bad_alloc 和 std::exception.是否 std::例外 仅是不够的
- 模式"allocate memory or use existing data"
- C++ broken_promise exception
- Win32 API - HWND "{unused = ???} Unable to read memory"错误
- "in-situ without memory allocation" 字符串的愚蠢实现意味着什么?
- 请参阅在 Visual Studio 2019 中捕获 std::exception 时对函数模板实例化消息的引用
- C++ "Using Uninitialized Memory.. (variable name) "
- "Memory Fragmentation"这仍然是一个问题?
- QVTKWidget SetRenderWindow() with PCLVisualizer Exception
- 自定义派生的 std::exception 类的 'what' 函数返回神秘的废话
- 使用flag、return、exception、goto或break中止过程
- 封送指向结构异常"cannot Read or Write protected memory"的指针数组的指针数组
- 由于某种原因,我的代码中出现了 [json.exception.type_error.302]。我知道错误意味着什么,但我不知道哪里有故障
- 如何找出导致"cv::Exception at memory location"的原因?
- openCV 中的 SVM 抛出"cv::Exception at memory location"
- 矢量存储限制的向量 - 获得"Microsoft C++ exception: std::bad_alloc at memory location 0x0031650C."错误