Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/141.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 调试错误-向量下标超出范围-PCL_C++_Visual Studio 2010_Vector_Descriptor_Point Cloud Library - Fatal编程技术网

C++ 调试错误-向量下标超出范围-PCL

C++ 调试错误-向量下标超出范围-PCL,c++,visual-studio-2010,vector,descriptor,point-cloud-library,C++,Visual Studio 2010,Vector,Descriptor,Point Cloud Library,我在下面的代码段中的两次打印之间收到一条“Debug assertion failed”错误消息,其中显示“vector subscript超出范围”。我在64位机器Win7和VS2010上使用PCL1.7.1 问题是,这是随机发生的,我不知道该怎么办。我如何调试这样一个东西,因为这看起来像是点云库(PCL)中的错误,但我很犹豫,因为通常错误是我自己造成的 代码所做的是,从文件中加载一个包含点云数据的.pcd文件,然后尝试从中创建ESF描述符。现在我知道,我在那个向量中没有索引,但它仍然没有发生

我在下面的代码段中的两次打印之间收到一条“Debug assertion failed”错误消息,其中显示“vector subscript超出范围”。我在64位机器Win7和VS2010上使用PCL1.7.1

问题是,这是随机发生的,我不知道该怎么办。我如何调试这样一个东西,因为这看起来像是点云库(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;
}
pcl::PointCloud::Ptr CreateSFDDescriptor(std::vector v){
pcl::PointCloud::Ptr cloud(新的pcl::PointCloud);
pcl::io::loadPCDFile(“data.pcd”,*云);

std::cout您的kdtree没有输入,请在
pcl::search::kdtree::Ptr kdtree(新的pcl::search::kdtree)下添加
kdtree.setInputCloud(cloud);


查看官方教程:

我也遇到了同样的问题,但这似乎无法解决问题。还有其他建议吗?