2016-03-03 2 views
0

Я пытаюсь получить доступ к узлам и деревьям RTrees. Имея следующий код:OpenCV - получить значения Rtrees не работает - несоответствие типа CopyTo

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

Эта ошибка памяти не выглядит как вызвано типом данных и типом разделений является правильным. Если вы сомневаясь, используйте «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(); 
Смежные вопросы