pcl/filters/uniform_sampling.h: 没有那个文件或目录

9 篇文章 1 订阅
2 篇文章 0 订阅

问题描述

在编译点云库官方教程3D Object Recognition based on Correspondence Grouping中的例程correspondence_grouping.cpp时,报错信息如下所示:
在这里插入图片描述

问题原因

此问题产生的原因为在PCL 1.7.2中,UniformSampling位于“keypoints”模块中,而在1.8.0中,它已移至“filters”模块。而官网的教程通常对应新版PCL。

解决方案

在PCL的官方论坛已经有这一问题的解决方案,但是为英文所示,故此处以中文阐述。

1.头文件替换

需要将第7行代码(如下图所示)包含的头文件更改为如下代码块,这一步即为更改到老版的头文件。
在这里插入图片描述

//#include <pcl/filters/uniform_sampling.h>
#include <pcl/keypoints/uniform_sampling.h> // 注释掉上一行代码,添加此行代码

2.代码修改

由于头文件更改还需要更改对应的代码部分,找到程序221~234行,进行如下代码块的修改或直接替换,之后即可正常编译。
在这里插入图片描述

//
//  Downsample Clouds to Extract keypoints
//

  pcl::UniformSampling<PointType> uniform_sampling;
  uniform_sampling.setInputCloud (model);
  uniform_sampling.setRadiusSearch (model_ss_);
  //uniform_sampling.filter (*model_keypoints);
  pcl::PointCloud<int> keypointIndices1; //注释上一行代码,改行及以下两行代替被注释的一行
  uniform_sampling.compute(keypointIndices1);
  pcl::copyPointCloud(*model, keypointIndices1.points, *model_keypoints);
  std::cout << "Model total points: " << model->size () << "; Selected Keypoints: " << model_keypoints->size () << std::endl;


  uniform_sampling.setInputCloud (scene);
  uniform_sampling.setRadiusSearch (scene_ss_);
  //uniform_sampling.filter (*scene_keypoints);
  pcl::PointCloud<int> keypointIndices2; 注释上一行代码,改行及以下两行代替被注释的一行
  uniform_sampling.compute(keypointIndices2);
  pcl::copyPointCloud(*scene, keypointIndices2.points, *scene_keypoints);
  std::cout << "Scene total points: " << scene->size () << "; Selected Keypoints: " << scene_keypoints->size () << std::endl;

在这里插入图片描述

程序执行问题

1. milk.pcd无法使用

另外PCL官网该教程给的milk.pcd文件有问题,不可正常使用,故需要去gitHub上PCL的主页下载这两个文件。或者直接在终端中运行下列代码。最终你可以在下载的文件中的路径data/tutorials/correspondence_grouping/milk.pcd下找到milk.pcd。

git clone https://github.com/PointCloudLibrary/data.git

可以通过在上面路径下终端中运行如下代码,查看文件的时间。

ls -la milk.pcd
157491 Mar 10 14:55 milk.pcd

原来的不能正常工作的milk.pcd的打印信息如下,可以看到文件的时间不同。

92940 Mar 10 13:40 milk.pcd

2. 例程的运行指令

程序运行时的第二条指令

./correspondence_grouping milk.pcd milk_cartoon_all_small_clorox.pcd milk.pcd milk_cartoon_all_small_clorox.pcd -r --model_ss 7.5 --scene_ss 20 --rf_rad 10 --descr_rad 15 --cg_size 10

或许应该为

./correspondence_grouping milk.pcd milk_cartoon_all_small_clorox.pcd -r --model_ss 7.5 --scene_ss 20 --rf_rad 10 --descr_rad 15 --cg_size 10

有一对pcd文件的名字重复了,但是要想获得他们图示的内容应该使用如下指令

./correspondence_grouping milk.pcd milk_cartoon_all_small_clorox.pcd -k
./correspondence_grouping milk.pcd milk_cartoon_all_small_clorox.pcd -c

好了,差不多就这么多,大家有什么要补充的欢迎留言。

  • 3
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值