资源简介
采用PCL来对点云的体积进行求解,语言采用C++进行实现
代码片段和文件信息
#include //常用输入输出头文件
#include
#include //OpenNI采集头文件
#include //采样一致性模型相关类头文件
#include //点云数据 点类型头文件
#include //可视化头文件
#include //直通滤波器头文件
#include //体素滤波器头文件
#include //索引提取滤波器头文件
#include //统计滤波头文件
#include //映射相关头文件
#include //随机参数估计方法头文件
#include //模型定义头文件
#include //基于采样一致性分割的类的头文件
#include //提取凸(凹)多边形的头文件
//#include //opencv头文件
using namespace std;
//using namespace cv;
class SimpleOpenNIProcessor
{
public:
pcl::visualization::CloudViewer viewer; // Cloudviewer显示对象
// 直通滤波器对象
pcl::PassThrough XpassFilter;
pcl::PassThrough YpassFilter;
// 下采样 VoxelGrid 滤波对象
pcl::VoxelGrid VoxlFilter;
// 创建分割对象
pcl::SACSegmentation segPlane;
// 提取索引滤波器
pcl::ExtractIndices extractPlane;
// 统计滤波器
pcl::StatisticalOutlierRemoval statisFilter;
// 点云投影滤波对象
pcl::ProjectInliers projec;
int heightCount = 0;
float heightSum = 0.0;
int areaCount = 0;
float areaSum = 0.0;
SimpleOpenNIProcessor() : viewer(“PCL OpenNI Viewer“) {
// 滤波字段设为x轴方向
XpassFilter.setFilterFieldName(“x“);
// 设定可接受范围,将不在范围内的点过滤掉或者保留(由setFilterLimitsNegative决定)
XpassFilter.setFilterLimits(-0.25 0.05); // TODO: X方向裁剪阈值需要调试 实际是0.44m
// 滤波字段设为y轴方向
YpassFilter.setFilterFieldName(“y“);
// 设定可接受范围,将不在范围内的点过滤掉或者保留(由setFilterLimitsNegative决定)
YpassFilter.setFilterLimits(-0.27 0.18); // TODO: Y方向裁剪阈值需要调试 实际是0.69m
// 设置体素滤波时创建的体素体积为0.5*0.5*0.5cm的立方体
VoxlFilter.setLeafSize(0.005f 0.005f 0.005f);
// 统计滤波初始设置
statisFilter.setMeanK(50); // 对每个点分析的临近点个数设为50
statisFilter.setStddevMulThresh(1.0); // 将标准差倍数设为1,意味着一个点的距离超出平均距离1个标准差以上,就会被标记为离群点,并被移除。
// 可选:设置模型系数需要优化
segPlane.setOptimizeCoefficients(true);
// 必选:设置分割的模型类型、所用的随机参数估计方法、距离阈值、迭代次数上限
segPlane.setModelType(pcl::SACMODEL_PLANE);
segPlane.setMethodType(pcl::SAC_RANSAC);
segPlane.setDistanceThreshold(0.01); // TODO: 距离阈值需要调试
segPlane.setMaxIterations(1000);
// 设置投影模型为SACMODEL_PLANE
projec.setModelType(pcl::SACMODEL_PLANE);
} // Construct a cloud viewer with a window name
// 定义回调函数cloud_cb_获取到数据时对数据进行处理
void cloud_cb_(const pcl::PointCloud::ConstPtr &cloud)
{
heightCount++;
areaCount++;
cout << “原始点云大小:“ << cloud->points.size() << endl;
// 1. 空间裁剪
pcl::PointCloud::Ptr pass_filtered
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
目录 0 2018-12-16 22:51 PointCloudVolume\
文件 2518 2018-06-11 20:28 PointCloudVolume\.gitattributes
文件 3781 2018-06-11 20:28 PointCloudVolume\.gitignore
文件 73234 2018-06-11 20:28 PointCloudVolume\ALL_BUILD.vcxproj
文件 289 2018-06-11 20:28 PointCloudVolume\ALL_BUILD.vcxproj.filters
文件 1412 2018-06-11 20:28 PointCloudVolume\cmake_install.cmake
文件 47860 2018-06-11 20:28 PointCloudVolume\CMakeCache.txt
目录 0 2018-12-16 22:51 PointCloudVolume\imgRecord\
文件 5054181 2018-06-11 20:28 PointCloudVolume\imgRecord\GIF.gif
文件 330706 2018-06-11 20:28 PointCloudVolume\imgRecord\originCloud.png
文件 239551 2018-06-11 20:28 PointCloudVolume\imgRecord\passThrough.png
文件 160249 2018-06-11 20:28 PointCloudVolume\imgRecord\PlaneSeg.png
文件 145220 2018-06-11 20:28 PointCloudVolume\imgRecord\statisFiltered.png
文件 135432 2018-06-11 20:28 PointCloudVolume\imgRecord\voxelFiltered.png
文件 11357 2018-06-11 20:28 PointCloudVolume\LICENSE
文件 3063 2018-06-11 20:28 PointCloudVolume\openni_grabber.sln
文件 175894 2018-06-11 20:28 PointCloudVolume\openni_grabber.vcxproj
文件 596 2018-06-11 20:28 PointCloudVolume\openni_grabber.vcxproj.filters
文件 1240 2018-06-11 20:28 PointCloudVolume\README.md
目录 0 2018-12-16 22:51 PointCloudVolume\source\
文件 443 2018-06-11 20:28 PointCloudVolume\source\CMakeLists.txt
文件 1190 2018-06-11 20:28 PointCloudVolume\source\opencv2413_debug_x64.props
文件 1054 2018-06-11 20:28 PointCloudVolume\source\opencv2413_release_x64.props
文件 12020 2018-06-11 20:28 PointCloudVolume\source\openni_grabber.cpp
文件 12858 2018-06-11 20:28 PointCloudVolume\source\volDetectVisualizer.cpp
文件 63761 2018-06-11 20:28 PointCloudVolume\ZERO_CHECK.vcxproj
文件 514 2018-06-11 20:28 PointCloudVolume\ZERO_CHECK.vcxproj.filters
- 上一篇:wavelet的dll封装与c++调用
- 下一篇:opengl简单的阴影贴图
相关资源
- kinect2.0数据采集及点云生成代码C++
- 点云压缩代码
- 点云数据处理---用opengl绘制显示并操
- 用C++实现点云显示
- 点云Las文件读写c++库 Lasib_msvc2015
- 基于PCL的对点云的排序
- HOUGH_LINE.cpp
- kinect+opengl 生成并显示点云
- Kinect2.0+PCL实现点云显示
- PCL点云-RGBD图像ICP迭代最近点之点云配
- 点云数据滤波------数学形态学
- PCL点云拼接
- Windows下配置python_pcl全套资料
- 激光雷达点云地平面校准 地面分割
- VTK源码,读取obj、stl点云,生成重建
- 点云生成深度图,并保存深度图
- 通过MFC和OpenGL实现点云数据的提取和
- OpenGL+MFC+点云
- OpenGL+MFC显示三维点云中每一个点的法
- Ndt+ICP配准算法亲测可用
- 三维激光点云数据,希望能用的着
- 点云PCL三维重建
- 点云数据(圆柱面)
- 利用组合惯导实现多帧点云拼接并迭
- opencv+zed测距
- 点云圆柱提取代码
- 基于PCL点云的三角形网格孔洞修补
- 给定点求取凸包并进行三角剖分
评论
共有 条评论