【发布时间】:2014-06-26 20:03:50
【问题描述】:
我想将点云作为输入参数传递给点云库提出的函数,但这是我的问题: 我有一个点云向量,我想将它们一个一个地传递给一个过滤器,最终将它们放入另一个过滤的点云向量中。我为此使用了迭代器,但是期望点云作为输入的函数不采用迭代器......我不明白为什么。代码:
std::vector <pcl::PointCloud<pcl::PointXYZRGB>::Ptr> pcl_filter(std::vector <pcl::PointCloud<pcl::PointXYZRGB>::Ptr> rdy_to_pro_pcls){
std::vector<int> indices;
std::vector <pcl::PointCloud<pcl::PointXYZRGB>::Ptr>::iterator vIt_pcls = rdy_to_pro_pcls.begin();
std::vector <pcl::PointCloud<pcl::PointXYZRGB>::Ptr> vFilt_pcls;
pcl::PointCloud<pcl::PointXYZRGB>::Ptr without_nanpcl(new pcl::PointCloud<pcl::PointXYZRGB>);
pcl::PointCloud<pcl::PointXYZRGB>::Ptr filt_pcl(new pcl::PointCloud<pcl::PointXYZRGB>);
for (vIt_pcls = rdy_to_pro_pcls.begin(); vIt_pcls != rdy_to_pro_pcls.end(); vIt_pcls++){
pcl::removeNaNFromPointCloud(*vIt_pcls, *without_nanpcl, indices);
pcl::VoxelGrid<pcl::PointXYZRGB> sor;
sor.setInputCloud(*vIt_pcls);
sor.setLeafSize(0.01f, 0.01f, 0.01f);
sor.filter(*filt_pcl);
vFilt_pcls.push_back(filt_pcl);
}
return vFilt_pcls;
}
我实际上想将 without_nanpcl 对象放入向量中。我不能更进一步,因为我的调试器不批准我正在做的事情。正如你在下面看到的,有一个名为 setInputCloud 的函数接受向量迭代器,我想用 pcl::removeNaNFromPointCloud 做同样的事情,但我不知道为什么它不起作用。
这是错误输出(代码示例的第 8 行):
error C2784: 'void pcl::removeNaNFromPointCloud(const pcl::PointCloud<PointT> &,pcl::PointCloud<PointT> &,std::vector<int,std::allocator<_Ty>> &)' : could not deduce template argument for 'const pcl::PointCloud<PointT> &' from 'boost::shared_ptr<pcl::PointCloud<pcl::PointXYZRGB>>'
这里是 pcl::removeNaNFromPointCloud 声明:
void pcl::removeNaNFromPointCloud (
const pcl::PointCloud< PointT > & cloud_in,
pcl::PointCloud< PointT > & cloud_out,
std::vector< int > & index
)
你能帮我解决这个问题吗? 谢谢你
【问题讨论】:
-
1. 调试器不认可?这意味着什么?您是否可能遇到编译错误?如果是这样,请发布完整的错误消息及其发生的行。 2.请出示
pcl::removeNaNFromPointCloud的声明 -
抱歉显示我的答案,我不知道如何在代码下划线...
-
编辑您的问题并添加错误消息并指出它抱怨的源代码行。
-
谢谢我刚刚完成了
-
错误消息中有行号。不要忽略那些。确保发布了违规行,并标有 this is line number 12345 注释,并且帖子中包含足够多的源代码行以提供上下文。
标签: c++ vector iterator point-cloud-library