• 大小: 5.74MB
    文件类型: .zip
    金币: 1
    下载: 0 次
    发布日期: 2023-09-29
  • 语言: C/C++
  • 标签: 点云  

资源简介

采用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

评论

共有 条评论