本项目利用OpenCV库实现SVM算法进行图像分类。通过训练模型识别不同类别的图片数据,适用于机器学习和计算机视觉应用研究。
这是OpenCV SVM图像分类的整个工程代码,在VS2010下打开即可使用。整个工程文件以及我所有训练图片存放在一起,需要的话可以下载。自行寻找训练图片并编写代码会花费大量时间,因此建议直接下载。解压后,请将project data文件夹放置在D盘中,其中包含用于训练的图片和待测试图片、以及训练过程中生成的中间文件。“object_classfication_end”是工程文件名,在VS2010下打开即可使用。
需要注意以下几点:
1. 在此模块中使用了C++的Boost库。但请注意版本限制:代码只能在Boost 1.46及以上版本上运行,低于这个版本则会出错。这是因为从这一版开始对CsSVM类中的某些成员函数进行了私有化修改。
2. 我使用的模块所涉及的所有函数和中间结果都在categorizer类中声明了。由于不同执行阶段会产生许多中间文件,例如训练图片聚类后得到的单词表矩阵、svm分类器训练的结果等,并且生成这些中间文件的过程非常耗时,因此在代码初始运行时将它们以XML格式保存下来供后续使用。
3. 在测试过程中如果输入图片太小或全为黑色,在进行特征提取和构建词汇之后使用SVM进行分类可能会出现问题。经过调试发现,上述情况下的图片在生成单词矩阵时会得到一个空矩阵(即行列数都为0)。因此,在将这些图像的单词矩阵用于svm分类器之前需要先判断其行列是否均为零;如果确实为空,则该图直接跳过处理。
以上内容就是工程文件使用说明和注意事项。