本文记录了笔者在使用点云库PCL时,所遇到的几个问题及解决办法:
目录
使用VoxelGrid对pcl::PointXYZ类型的点云进行滤波
pcl::PointCloud::Ptr和pcl::PointCloud相互转换
如何查找点云的x,y,z的极值(最大值和最小值)?(通过调用pcl::getMinMax3D函数)
std::vector的清空,Vector清空数据与释放内存(.clear与.swap的区别与使用)
PCL中点云数据格式之间的转化
参考网址:
http://www.cnblogs.com/li-yao7758258/p/6659451.html
使用VoxelGrid对pcl::PointXYZ类型的点云进行滤波
“你过滤的时候使用VoxelGrid<pcl::pointxyz>结构就可以了,无需再转换成sensor_msgs::pointcloud2格式。”
以上来源于网址:
http://www.pclcn.org/bbs/forum.php?mod=viewthread&tid=47
测试通过的代码:(20171013YC)
PCL中关于滤波模块的类
参考网址:
http://blog.csdn.net/yaningli/article/details/77334625
pcl::PointCloud::Ptr和pcl::PointCloud相互转换
《PCL点云库学习&VS2010(X64)》Part 31 pcl::PointCloud::Ptr和pcl::PointCloud相互转换
1、在函数返回指针时,经常会出现不知道的错误,不用返回指针,直接得到PointXYZ,再将其转化为Ptr。
[html] view plain copy
- #include <pcl/io/pcd_io.h>
- #include <pcl/point_types.h>
- #include <pcl/point_cloud.h>
- pcl::PointCloud<pcl::PointXYZ>::Ptr cloudPointer(new pcl::PointCloud<pcl::PointXYZ>);
- pcl::PointCloud<pcl::PointXYZ> cloud;
- cloud = *cloudPointer;
- cloudPointer = cloud.makeShared();
对应网址:
http://blog.csdn.net/sinat_24206709/article/details/70266190
体素中心点滤波
可参考以下网址,其中有体素中心点滤波的例子代码:
http://blog.csdn.net/sjt19910311/article/details/49329935
(→用正态分布变换进行配准)
如何查找点云的x,y,z的极值(最大值和最小值)?(通过调用pcl::getMinMax3D函数)
#include <pcl/io/pcd_io.h>
#include <pcl/point_types.h>
#include <pcl/common/common.h>
pcl::PointCloud<pcl::PointXYZ>::Ptr cloud;
cloud = pcl::PointCloud<pcl::PointXYZ>::Ptr (new pcl::PointCloud<pcl::PointXYZ>);
pcl::io::loadPCDFile<pcl::PointXYZ> ("your_pcd_file.pcd", *cloud);
pcl::PointXYZ minPt, maxPt;
pcl::getMinMax3D (*cloud, minPt, maxPt);
→来源于网址:https://segmentfault.com/a/1190000007125502
std::vector<int>的清空,Vector清空数据与释放内存(.clear与.swap的区别与使用)
参考网址:
http://blog.csdn.net/a272846945/article/details/51182144