背景
在使用 PCL 点云库 做基于对应分组的三维物体识别的代码中遇到了以下报错信息:
error C2039: “compute”: 不是“pcl::UniformSampling<PointType>”的成员
解决方法
uniform_sampling.compute(sampled_indices);
pcl::copyPointCloud(*model, sampled_indices.points, *model_keypoints);
将报错的两行代码替换为下面的一行
uniform_sampling.filter(*model_keypoints); //滤波
同时引入头文件
#include <pcl/filters/uniform_sampling.h>
问题解决哈哈
原因
对于 pcl::UniformSampling
函数在PCL1.7版本里 该函数放在keypoints 库文件中,用法如下:
pcl::PointCloud<int> keypointIndices;
filter.compute(keypointIndices);
pcl::copyPointCloud(*cloud, keypointIndices.points, *filteredCloud);
之后在PCL1.8版本里 该函数位于 filters模块里,并在keypoints模块里也包含了这个头文件,因此如果想要在1.8的版本中使用,需要更改头文件和使用方法。
#warning UniformSampling is not a Keypoint anymore,
use <pcl/filters/uniform_sampling.h> instead.
用法如下:
PointCloud<PointXYZ> output_;
filter.filter (output_);
参考: