繁体   English   中英

调试错误 - 矢量下标超出范围 - PCL

[英]Debug error - vector subscript out of range - PCL

我得到一个'Debug assertion failed'错误消息,它在下面的代码片段中的两个打印件之间显示'vector subscript out of range'。 我在64位机器,Win7和VS2010上使用PCL 1.7.1。

问题是,这是随机发生的,我不知道该怎么做。 我如何调试这样的东西,因为这看起来像点云库(PCL)中的错误,但我犹豫不决,因为通常错误是我。

代码的作用是,从文件中加载带有Point云数据的.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;
}

你的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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM