Ошибка отладки — векторный индекс находится вне диапазона — PCL

Я получаю сообщение об ошибке «Ошибка отладки», где написано «векторный индекс вне диапазона» между двумя отпечатками в фрагменте кода ниже. Я использую PCL 1.7.1 на 64-битной машине, Win7 и VS2010.

Дело в том, что это происходит случайным образом, и я понятия не имею, что делать. Как мне отладить такую ​​вещь, так как это выглядит как ошибка в облачной библиотеке точек (PCL), но я колеблюсь, потому что обычно ошибка со мной.

Код выполняет загрузку файла .pcd с данными облака точек из файла и затем пытается создать из него дескриптор ESF. Теперь я знаю, что у меня нет индекса в этом векторе, но в моем коде этого не происходит … Есть идеи, что я могу делать неправильно?

pcl::PointCloud<pcl::ESFSignature640>::Ptr  createESFDescriptor(std::vector<float> v) {

pcl::PointCloud<pcl::PointXYZ>::Ptr cloud (new pcl::PointCloud<pcl::PointXYZ>);
pcl::io::loadPCDFile("data.pcd", *cloud);
std::cout << "size: " << cloud->size() << std::endl;

pcl::ESFEstimation<pcl::PointXYZ,pcl::ESFSignature640> esf;
esf.setInputCloud(cloud);

pcl::search::KdTree<pcl::PointXYZ>::Ptr kdtree (new pcl::search::KdTree<pcl::PointXYZ>);
esf.setSearchMethod(kdtree);

pcl::PointCloud<pcl::ESFSignature640>::Ptr esfPointer(new pcl::PointCloud<pcl::ESFSignature640> ());

printf("dbg1");
esf.compute(*esfPointer);
printf("dbg2");

return esfPointer;
}

3

Решение

Ваше kdtree не имеет ввода, добавьте kdtree.setInputCloud (cloud);под pcl::search::KdTree<pcl::PointXYZ>::Ptr kdtree (new pcl::search::KdTree<pcl::PointXYZ>);

проверьте официальный учебник:http://pointclouds.org/documentation/tutorials/kdtree_search.php#kdtree-search

0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]