当前位置:   article > 正文

PCL高斯滤波两种方法:pcl::filters::GaussianKernel和pcl::filter::Convolution使用的报错问题_pcl::gaussiankernel

pcl::gaussiankernel

想调用pcl高斯滤波函数进行点云处理中,先参考了两种网上的pcl高斯滤波程序,在VS2013中运行报错,一直未能解决,求助!!!

方法1:(参考文章:https://blog.csdn.net/fandq1223/article/details/53183489

  1. #include <iostream>
  2. #include <pcl/io/pcd_io.h>
  3. #include <pcl/point_types.h>
  4. #include <pcl/filters/convolution_3d.h>
  5. #include <pcl/filters/convolution.h>
  6. #include <pcl/search/kdtree.h>
  7. int main(int argc, char** argv)
  8. {
  9. pcl::PointCloud<pcl::PointXYZ>::Ptr inputCloud(new pcl::PointCloud<pcl::PointXYZ>);
  10. pcl::PointCloud<pcl::PointXYZ>::Ptr cloud(new pcl::PointCloud<pcl::PointXYZ>);
  11. if (pcl::io::loadPCDFile("test.pcd", *inputCloud) == -1)
  12. {
  13. PCL_ERROR("Couldn't read file test_pcd.pcd\n");
  14. return(-1);
  15. }
  16. pcl::filters::Convolution<pcl::PointXYZ, pcl::PointXYZ> convolution;
  17. Eigen::ArrayXf gaussian_kernel(5);
  18. gaussian_kernel << 1.f / 16, 1.f / 4, 3.f / 8, 1.f / 4, 1.f / 16;
  19. convolution.setBordersPolicy(
  20. pcl::filters::Convolution<pcl::PointXYZ, pcl::PointXYZ>::BORDERS_POLICY_IGNORE);
  21. convolution.setDistanceThreshold(static_cast<float> (0.1));
  22. convolution.setInputCloud(inputCloud);
  23. convolution.setKernel(gaussian_kernel);
  24. convolution.convolve(*cloud);
  25. }

运行到最后一句convolution.convolve(*cloud);时报错:,尝试修改程序,任然报错

 

方法2:(参考文章:https://blog.csdn.net/fandq1223/article/details/53183489

  1. #include <iostream>
  2. #include <pcl/io/pcd_io.h>
  3. #include <pcl/point_types.h>
  4. #include <pcl/filters/convolution_3d.h>
  5. #include <pcl/filters/convolution.h>
  6. #include <pcl/search/kdtree.h>
  7. int main(int argc, char** argv)
  8. {
  9. //Create the input and filtered cloud objects
  10. pcl::PointCloud<pcl::PointXYZ>::Ptr inputcloud(new pcl::PointCloud<pcl::PointXYZ>);
  11. pcl::PointCloud<pcl::PointXYZ>::Ptr outputcloud(new pcl::PointCloud<pcl::PointXYZ>);
  12. //Read in the input file
  13. if (pcl::io::loadPCDFile("test.pcd", *inputcloud) == -1)
  14. {
  15. PCL_ERROR("Couldn't read file test_pcd.pcd\n");
  16. return(-1);
  17. }
  18. //Set up the Gaussian Kernel
  19. pcl::filters::GaussianKernel<pcl::PointXYZ, pcl::PointXYZ>::Ptr kernel(new pcl::filters::GaussianKernel<pcl::PointXYZ, pcl::PointXYZ>);
  20. (*kernel).setSigma(4);
  21. (*kernel).setThresholdRelativeToSigma(4);
  22. std::cout << "Kernel made" << std::endl;
  23. //Set up the KDTree
  24. pcl::search::KdTree<pcl::PointXYZ>::Ptr kdtree(new pcl::search::KdTree<pcl::PointXYZ>);
  25. (*kdtree).setInputCloud(inputcloud);
  26. std::cout << "KdTree made" << std::endl;
  27. //Set up the Convolution Filter
  28. pcl::filters::Convolution3D<pcl::PointXYZ, pcl::PointXYZ, pcl::filters::GaussianKernel<pcl::PointXYZ, pcl::PointXYZ>> convolution;
  29. convolution.setKernel(*kernel);
  30. convolution.setInputCloud(inputcloud);
  31. convolution.setSearchMethod(kdtree);
  32. convolution.setRadiusSearch(100);
  33. std::cout << "Convolution Start" << std::endl;
  34. convolution.convolve(*outputcloud);
  35. std::cout << "Convoluted" << std::endl;
  36. }

在生成解决方案时对数第二句convolution.convolve(*outputcloud);报错:error C3066:使用这些参数调用此类型的对象有多种方法,查找资料也未能解决。

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/Monodyee/article/detail/236902
推荐阅读
相关标签
  

闽ICP备14008679号