尝试从xml文件训练CvANN_MLP ann时出现意外的内存错误
unexpected memory error when trying to train CvANN_MLP ann from xml file
我正试图从输入图像到我的代码分类数字我创建了一个OCR_3。xlm文件,我认为没有问题,但是当我尝试训练CvANN_MLP时,我得到了一个错误,上面写着:
OpenCV Error: Assertion failed (y==0 || (data &&>= 1 &&(无符号)y & lt;(unsigned)size.p[0])) in cv::Mat::ptr, file D:opencvbuildincludeopencv2coreMat.hpp, line 429
下面是我的代码:int main(int argc, char** argv)
{
FileStorage fs;
fs.open("OCR_3.xml", FileStorage::READ);
Mat trainData;
Mat classes;
fs["TrainingData"] >> trainData;
fs["classes"] >> classes;
int const nlayers = 10;
CvANN_MLP ann;
int const numCharacters = 9;
int buffer[] = { trainData.cols, nlayers, numCharacters };
Mat const layers(1, 3, CV_32SC1, buffer);
ann.create(layers, CvANN_MLP::SIGMOID_SYM, 1, 1);
Mat trainClasses(trainData.rows, numCharacters, CV_32FC1);
for (int i = 0; i != trainClasses.rows; ++i){
int const labels = *classes.ptr<int>(i);
auto train_ptr = trainClasses.ptr<float>(i);
for (int k = 0; k != trainClasses.cols; ++k){
*train_ptr = k != labels ? 0 : 1;
++train_ptr;
}
}
Mat const weights = cv::Mat::ones(1, trainData.rows, CV_32FC1);
ann.train(trainData, trainClasses, weights);
return 0;
}
我一直在做这个大约3个月,我真的不知道问题是什么,你能帮我通过这个,也许有问题在。xml文件
你可以从这个网址下载我的ocr_3.xml文件:
https://www.dropbox.com/s/g32cm20f13hffpu/OCR_3.xml?dl=0
阅读本教程,了解如何准备数据文件https://github.com/bytefish/opencv/blob/master/machinelearning/doc/machinelearning.pdf
注意:最新版本的OpenCv - 3.0 -机器学习模块重写因此,在做出正确的数据文件代码后,必须适应新版本
http://docs.opencv.org/master/db/dfa/tutorial_transition_guide.html相关文章:
- 在C++中对T*类型执行std::move的意外行为
- 使用取消引用的指针的多态性会产生意外的结果.为什么?
- 处理除以零会导致<csignal>意外行为
- vscode下的Arduino代码出现意外编译错误
- 使用++运算符会导致意外的结果
- 套接字读取后,我在缓冲区中看到意外输入
- 更改.cpp程序的输入文件中数据的位置会意外更改输出
- 使用vscode调试时,GDB意外退出
- 此测试()中发生了什么意外过程?为什么总是覆盖 ch[0 1 2..]?
- 尝试将字符串/字符转换为整数会产生意外结果
- 错误 C2760:语法错误:映射迭代器上意外的标记"标识符",预期的";"
- C++标头错误 C2238 意外标记";"
- C++中意外的多头值
- vector.size() 在比较中意外工作
- 使用 malloc() 时出现意外大小
- 多线程程序中出现意外的内存泄漏
- 为什么static_cast基础类型的枚举类int8_t获得意外值?
- 字符串比较中的意外输出
- 我的代码中的意外价值以及我如何修复它
- 尝试从xml文件训练CvANN_MLP ann时出现意外的内存错误