随机树CvRTrees持久性问题opencv

Random tree CvRTrees persistence issue opencv

本文关键字:问题 opencv 持久性 CvRTrees 随机      更新时间:2023-10-16

我正在尝试使用Opencv实现一个随机树分类器。我成功地用opencv实现了它,它正在发挥作用。

然后我决定把训练部分和分类部分分开。这样做的目的是保存经过训练的林,并在您想要对某个内容进行分类时将其加载回来。

我尝试了两种不同的方式:

  1. 使用超类CvStatModel写入和读取方法
  2. 使用CvStatModel超类的存储和加载方法

但没有将树保存到文件中的旧实现的结果是不同的,也是最糟糕的。

以下代码是第二点的实现:

存储:

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有人对此代码有什么建议吗?

这是由于文件错误导致的错误!

所以这种坚持是有效的!

但是,如果有人需要实现它,我会把帖子作为示例留下!