• 大小: 23.48MB
    文件类型: .rar
    金币: 1
    下载: 0 次
    发布日期: 2023-06-22
  • 语言: 其他
  • 标签: 图像分类  

资源简介

opencv+svm实现图像分类代码+训练图片,新建opencv工程,导入两个文件就可以了。

资源截图

代码片段和文件信息

#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
//boost 库
#include

#include“Config.h“

using namespace cv;
using namespace std;
//定义一个boost库的命名空间
namespace fs=boost::filesystem;
using namespace fs;


class categorizer
{
private :
//从类目名称到数据的map映射
map result_objects;
//存放所有训练图片的BOW
map allsamples_bow;
//从类目名称到训练图集的映射,关键字可以重复出现
multimap train_set;
// 训练得到的SVM
CvSVM *stor_svms;
//类目名称,也就是TRAIN_FOLDER设置的目录名
vector category_name;
//类目数目
int categories_size;
//用SURF特征构造视觉词库的聚类数目
int clusters;
//存放训练图片词典
Mat vocab;

//特征检测器detectors与描述子提取器extractors   泛型句柄类Ptr
Ptr featureDecter;
PtrriptorExtractor> descriptorExtractor;

Ptr bowtrainer;
PtrriptorExtractor> bowDescriptorExtractor;
PtrsedMatcher> descriptorMacher;

//构造训练集合
void make_train_set();
// 移除扩展名,用来讲模板组织成类目
string remove_extention(string);

public:
//构造函数
categorizer(int);
// 聚类得出词典
void bulid_vacab();
//构造BOW
void compute_bow_image();
//训练分类器
void trainSvm();
//将测试图片分类
void category_By_svm();
};

// 移除扩展名,用来讲模板组织成类目
string categorizer::remove_extention(string full_name)
{
//find_last_of找出字符最后一次出现的地方
int last_index=full_name.find_last_of(“.“);
string name=full_name.substr(0last_index);
return name;
}

// 构造函数
categorizer::categorizer(int _clusters)
{
cout<<“开始初始化...“< clusters=_clusters;
//初始化指针
featureDecter=new SurfFeatureDetector();
descriptorExtractor=new SurfDescriptorExtractor();

bowtrainer=new BOWKMeansTrainer(clusters);
descriptorMacher=new FlannbasedMatcher();
bowDescriptorExtractor=new BOWImgDescriptorExtractor(descriptorExtractordescriptorMacher);

//boost库文件 遍历数据文件夹  directory_iterator(p)就是迭代器的起点,无参数的directory_iterator()就是迭代器的终点。
directory_iterator begin_iter(TEMPLATE_FOLDER);
directory_iterator end_iter;
//获取该目录下的所有文件名
for(;begin_iter!=end_iter;++begin_iter)
{
string filename=string(TEMPLATE_FOLDER)+begin_iter->path().filename().string();
string sub_category =remove_extention(begin_iter->path().filename().string());
//读入模板图片
Mat image=imread(filename);
Mat templ_image;

//存储原图模板
result_objects[sub_category]=image;
}

cout<<“初始化完毕...“< //读取训练集
make_train_set();
}


//构造训练集合
void categorizer::make_train_set()
{
cout<<“读取训练集...“< string categor;
//递归迭代rescursive 直接定义两个迭代器:i为迭代起点(有参数),end_iter迭代终点
for(recursive_directory_iterator i(TRAIN_FOLDER)end_iter;i!=end_iter;i++)
{
// level == 0即为目录,因为TRAIN__FOLDER中设置如此
if(i.level()==0)
{
// 将类目名称设置为目录的名称
categor=(i->path()).filename().string();
categor

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----

     文件        273  2015-07-13 16:12  TXFL\Config.h

     文件      11070  2015-05-29 16:03  TXFL\main.cpp

     文件      79991  2015-05-27 09:13  TXFL\project data\data\templates\airplanes.jpg

     文件      20916  2013-03-24 18:11  TXFL\project data\data\templates\butterfly.jpg

     文件      71204  2015-05-27 09:46  TXFL\project data\data\templates\camera.jpg

     文件      27457  2015-05-27 10:38  TXFL\project data\data\templates\scissors.jpg

     文件     152447  2015-05-27 10:13  TXFL\project data\data\templates\sunflower.jpg

     文件     156403  2015-05-27 08:53  TXFL\project data\data\test_image\0.jpg

     文件      91161  2015-05-27 08:46  TXFL\project data\data\test_image\1.jpg

     文件       4101  2013-03-24 18:11  TXFL\project data\data\test_image\10.jpg

     文件     156581  2015-05-27 10:36  TXFL\project data\data\test_image\11.jpg

     文件      22357  2015-05-27 10:43  TXFL\project data\data\test_image\12.jpg

     文件      11730  2013-03-24 18:11  TXFL\project data\data\test_image\13.jpg

     文件      15632  2013-03-24 18:11  TXFL\project data\data\test_image\14.jpg

     文件      21837  2013-03-24 18:11  TXFL\project data\data\test_image\15.jpg

     文件     155563  2015-05-27 09:10  TXFL\project data\data\test_image\2.jpg

     文件      52060  2015-05-27 08:55  TXFL\project data\data\test_image\3.jpg

     文件     127184  2015-05-27 10:28  TXFL\project data\data\test_image\4.jpg

     文件      13811  2013-03-24 18:11  TXFL\project data\data\test_image\5.jpg

     文件      16727  2013-03-24 18:11  TXFL\project data\data\test_image\6.jpg

     文件     151037  2015-05-27 10:03  TXFL\project data\data\test_image\7.jpg

     文件     138947  2015-05-27 10:04  TXFL\project data\data\test_image\8.jpg

     文件      14759  2013-03-24 18:11  TXFL\project data\data\test_image\9.jpg

     文件     168448  2015-05-26 23:00  TXFL\project data\data\train_images\airplanes\image_0001.jpg

     文件      11945  2015-05-27 09:02  TXFL\project data\data\train_images\airplanes\image_0002.jpg

     文件       6561  2013-03-24 18:11  TXFL\project data\data\train_images\airplanes\image_0003.jpg

     文件      12340  2013-03-24 18:11  TXFL\project data\data\train_images\airplanes\image_0004.jpg

     文件      11793  2013-03-24 18:11  TXFL\project data\data\train_images\airplanes\image_0005.jpg

     文件       9028  2013-03-24 18:11  TXFL\project data\data\train_images\airplanes\image_0006.jpg

     文件      12202  2013-03-24 18:11  TXFL\project data\data\train_images\airplanes\image_0007.jpg

............此处省略244个文件信息

评论

共有 条评论