OpenCV - 获取Rtrees值不起作用 - CopyTo类型不匹配

时间:2016-03-03 18:08:52

标签: c++ opencv random-forest opencv3.0

我正在尝试访问RTrees的节点和树。拥有以下代码:

Ptr<Rtrees> rt = RTrees::create();
...
...
rt->train(data);
vector<DTrees::Split> splits = rt->getSplits();

我不断收到内存访问权限。请注意,rt->getSplits()单独使用,我猜问题是splits的数据类型。

此外,当我阅读训练数据信息并希望将其复制到变量中时:

std::vector<int> catMap;
 data->getCapMap().copyTo(catMap);

它将垃圾复制到carMap中,我必须逐个元素地复制它,而不是使用copyTo方法。 你对这两个问题有什么看法吗?

谢谢,

1 个答案:

答案 0 :(得分:1)

该内存错误看起来不像是由数据类型引起的,并且拆分类型是正确的。如果你怀疑它,请使用'auto'

auto splits = rt->getSplits();

尝试其他功能,看看你的RTrees模型是否真的可用,

auto roots = model.getRoots();
auto nodes = model.getNodes();

如果在运行时没有内存访问错误,请设置调试点或打印日志消息以查看它们是否为空

std::cout << "num trees " << roots.size();
std::cout << "num nodes " <<  nodes.size();