【发布时间】:2013-12-21 06:01:12
【问题描述】:
我正在尝试使用 Opencv 实现随机树分类器。我用 opencv 成功实现了它,它正在工作。
然后我决定把训练部分和分类部分分开。 这个想法是保存经过训练的森林,并在您想要对某物进行分类时将其加载回来。
我尝试了两种不同的方式:
- 使用超类 CvStatModel 的 write 和 read 方法
- 使用超类 CvStatModel 的 store 和 load 方法
但未将树保存到文件的旧实现的结果不同且最差。
以下代码是第二点的实现:
存储它:
for (unsigned i=0; i<scenes.size(); ++i) {
char class_fname[50];
char output[100];
sprintf(class_fname,"class_%d.xml",i);
sprintf(output,"class_%d",i);
//classifiers[i]->save(class_fname,output);
classifiers[i]->save(class_fname);
}
要加载它们:
for (unsigned int i = 0; i<CLUSTERING_N_CENTERS;i++){
char class_fname[50];
char output[100];
sprintf(class_fname,"class_%d.xml",i);
sprintf(output,"class_%d",i);
classifiers[i] = new CvRTrees();
//classifiers[i]->load(class_fname,output);
classifiers[i]->load(class_fname);
}
我正在使用 opencv 2.4.6 有人对此代码有建议吗?
【问题讨论】:
标签: c++ opencv computer-vision