opencv SVM图像分类工程文件

时间:2018-08-19 02:24:20
【文件属性】:

文件名称:opencv SVM图像分类工程文件

文件大小:37.36MB

文件格式:ZIP

更新时间:2018-08-19 02:24:20

SVM图像分类

这是opencv svm图像分类的整个工程代码,在VS2010下打开即可。整个工程文件以及我的所有训练的图片存放在这里,需要的可以下载,自己在找训练图片写代码花了很多时间,下载完后自行解压,训练图片和测试图片可以从这免费下载http://download.csdn.net/detail/always2015/8944959,project data文件夹直接放在D盘就行,里面存放训练的图片和待测试图片,以及训练过程中生成的中间文件,现在这个下载object_classfication_end则是工程文件,我用的是vs2010打开即可,下面工程里有几个要注意的地方: 1、在这个模块中使用到了c++的boost库,但是在这里有一个版本的限制。这个模块的代码只能在boost版本1.46以上使用,这个版本以下的就不能用了,直接运行就会出错,这是最需要注意的。因为在1.46版本以上中对比CsSVM这个类一些成员函数做了一些私有化的修改,所以在使用该类初始化对象时候需要注意。 2、我的模块所使用到的函数和产生的中间结果都是在一个categorizer类中声明的,由于不同的执行阶段中间结果有很多个,例如:训练图片聚类后所得到单词表矩阵,svm分类器的训练的结果等,中间结果的产生是相当耗时的,所以在刚开始就考虑到第一次运行时候把他以文件XML的格式保存下来,下次使用到的时候在读取。将一个矩阵存入文本的时候可以直接用输出流的方式将一个矩阵存入,但是读取时候如果用输入流直接一个矩阵变量的形式读取,那就肯定报错,因为输入流不支持直接对矩阵的操作,所以这时候只能对矩阵的元素一个一个进行读取了。 3、在测试的时候,如果输入的图片太小,或者全为黑色,当经过特征提取和单词构造完成使用svm进行分类时候会出现错误。经过调试代码,发现上述图片在生成该图片的单词的时候所得到的单词矩阵会是一个空矩阵,即该矩阵的行列数都为0,所以在使用svm分类器时候就出错。所以在使用每个输入图片的单词矩阵的时候先做一个判断,如果该矩阵行列数都为0,那么该图片直接跳过。


网友评论

  • 刚开始研究SVM,借鉴一下好好学习学习
  • 需要Boost库
  • 训练图片和测试图片下载不了
  • object_classfication_end.exe 中的 0x73f5a882 处最可能的异常: Microsoft C++ 异常: 内存位置 0x00cff548 处的 boost::filesystem::filesystem_error 这个是为什么呢??
  • 差不多了。谢谢
  • 下载出错,为什么啊
  • 特别特别特别喜欢!
  • 特别好哈哈
  • 使用中,正在摸索
  • ifstream 和 ofstream有问题,改成boost::filesystem::ifstream或是std::ifstream,!=又有问题
  • 代码写得不错,正在学习,值得一看
  • 还得安装boost,boost是啥
  • 和前面一位朋友一样,错误1 error C2872: “ifstream”: 不明确的符号 main.cpp(可能是boost::filesystem::ifstream或是std::ifstream”) 错误2 error C2678: 二进制“!=”: 没有找到接受“boost::filesystem::ifstream”类型的左操作数的运算符(或没有可接受的转换) 错误3 error C2872: “ofstream”: 不明确的符号 main.cpp 不知道大家有没有这个错误?我在ifstream和ofstream前面都加上boost::filesystem::,还是会提示错误2.在前
  • 为什么用自己的图片不能分类呢?请指教
  • 正在学习中,感谢分享