当前位置: 首页 > news >正文

城市建设鹤岗市网站手机免费自助建站系统

城市建设鹤岗市网站,手机免费自助建站系统,长沙网页设计培训电话,好的网页设计网站[TOC]PCL中点云分割模块的学习 学习背景 参考书籍#xff1a;《点云库PCL从入门到精通》以及官方代码PCL官方代码链接,#xff0c;PCL版本为1.10.0#xff0c;CMake版本为3.16 学习内容 PCL中实现欧式聚类提取。在点云处理中,聚类是一种常见的任务,它将点云数据划分为多…[TOC]PCL中点云分割模块的学习 学习背景 参考书籍《点云库PCL从入门到精通》以及官方代码PCL官方代码链接,PCL版本为1.10.0CMake版本为3.16 学习内容 PCL中实现欧式聚类提取。在点云处理中,聚类是一种常见的任务,它将点云数据划分为多个独立的簇或集群。每个簇代表点云中的一个独立物体或区域。聚类可以帮助我们从复杂的点云场景中识别出单独的物体,为后续的物体识别、分类和其他处理任务奠定基础。 源代码及所用函数 源代码 #includepcl/ModelCoefficients.h//定义名为 pcl::ModelCoefficients 的类用于存储模型的系数 #includepcl/point_types.h #includepcl/io/pcd_io.h #includepcl/filters/extract_indices.h #includepcl/filters/voxel_grid.h #includepcl/kdtree/kdtree.h #includepcl/sample_consensus/method_types.h//随机参数估计方法头文件 #includepcl/sample_consensus/model_types.h//定义 PCL 中用于随机采样一致性 (SAC) 方法的枚举类型 #includepcl/segmentation/sac_segmentation.h//提供 PCL 中用于基于随机采样一致性 (SAC) 方法进行点云分割的类和函数 #includepcl/segmentation/extract_clusters.h//包含 PCL (Point Cloud Library) 中用于点云聚类的头文件/******************************************************************************打开点云数据并对点云进行滤波重采样预处理然后采用平面分割模型对点云进行分割处理提取出点云中所有在平面上的点集并将其存盘 ******************************************************************************/ int main(int argc,char** argv) {/*********************************************************读取点云数据***************************/pcl::PCDReader reader;pcl::PointCloudpcl::PointXYZ::Ptr cloud(new pcl::PointCloudpcl::PointXYZ);reader.read(/home/jojo/PointCloud/table_400.pcd,*cloud);std::cout 滤波之前有 cloud-points.size() 个点 std::endl;/*************************************创建过滤对象使用 1 厘米大小的叶片对数据集进行下采样************///使用体素化网格方法实现下采样即减少点的数量 减少点云数据并同时保存点云的形状特征 pcl::VoxelGridpcl::PointXYZ vg;pcl::PointCloudpcl::PointXYZ::Ptr cloud_filtered(new pcl::PointCloudpcl::PointXYZ);pcl::PointCloudpcl::PointXYZ::Ptr cloud_f(new pcl::PointCloudpcl::PointXYZ);vg.setInputCloud(cloud);//设置需要过滤的点云给滤波对象vg.setLeafSize(0.01f,0.01f,0.01f);//设置滤波时创建的体素体积为1cm的立方体vg.filter(*cloud_filtered); //执行滤波处理存储输出std::cout 滤波之后有 cloud_filtered-points.size() 个点 std::endl;/****************************创建平面模型分割的对象并设置参数************************************/pcl::SACSegmentationpcl::PointXYZ seg;pcl::PointIndices::Ptr inliers(new pcl::PointIndices);pcl::ModelCoefficients::Ptr coefficients(new pcl::ModelCoefficients);pcl::PointCloudpcl::PointXYZ::Ptr cloud_plane(new pcl::PointCloudpcl::PointXYZ());pcl::PCDWriter writer;seg.setOptimizeCoefficients(true);seg.setModelType(pcl::SACMODEL_PLANE);//分割模型seg.setMethodType(pcl::SAC_RANSAC);//随机参数估计方法seg.setMaxIterations(100);//最大的迭代次数seg.setDistanceThreshold(0.02);//设置阈值int i 0,nr_points (int)cloud_filtered-points.size();while (cloud_filtered-points.size() 0.3 * nr_points){/**********************************从剩余云中分离出最大的平面***************************/seg.setInputCloud(cloud_filtered);seg.segment(*inliers,*coefficients);if(inliers-indices.size() 0){std::cout 找不到平面对象 std::endl;break;}pcl::ExtractIndicespcl::PointXYZ extract;extract.setInputCloud(cloud_filtered);extract.setIndices(inliers);extract.setNegative(false);/********************************获取与平面相关的点**********************************/extract.filter(*cloud_plane);std::cout 代表平面组件的点云有 cloud_plane-points.size() 个 std::endl;/******************************移去平面局内点提取剩余点云****************************/extract.setNegative(true);extract.filter(*cloud_f);*cloud_filtered *cloud_f;}/******************************创建KD树对象****************************************/pcl::search::KdTreepcl::PointXYZ::Ptr kdtree(new pcl::search::KdTreepcl::PointXYZ);kdtree-setInputCloud(cloud_filtered);std::vectorpcl::PointIndices cluster_indices;pcl::EuclideanClusterExtractionpcl::PointXYZ ec;//欧式聚类对象ec.setClusterTolerance(0.02);// 设置近邻搜索的搜索半径为2cmec.setMinClusterSize(100);//设置一个聚类需要的最少的点数目为100ec.setMaxClusterSize(25000);//设置一个聚类需要的最大点数目为25000ec.setSearchMethod(kdtree);//设置点云的搜索机制ec.setInputCloud(cloud_filtered);ec.extract(cluster_indices);//从点云中提取聚类并将点云索引保存在cluster_indices中//迭代访问点云索引cluster_indices,直到分割处所有聚类int j 0;for (std::vectorpcl::PointIndices::const_iterator it cluster_indices.begin();it ! cluster_indices.end();it){pcl::PointCloudpcl::PointXYZ::Ptr cloud_cluster(new pcl::PointCloudpcl::PointXYZ);for (std::vectorint::const_iterator pit it-indices.begin();pit ! it-indices.end();pit){cloud_cluster-points.push_back(cloud_filtered-points[*pit]);}cloud_cluster-width cloud_cluster-points.size();cloud_cluster-height 1;cloud_cluster-is_dense true;std::cout 代表集群的点云 cloud_cluster-points.size() 个 std::endl;std::stringstream ss;ss cloud_cluster_ j .pcd;writer.writepcl::PointXYZ(ss.str(),*cloud_cluster,false);j;}return 0;} CMakeLists.txt cmake_minimum_required(VERSION 3.16 FATAL_ERROR)#指定CMake的最低版本要求为3.16 project(project)#设置项目名称 find_package(PCL 1.10 REQUIRED)#查找PCL库,要求版本为1.10或更高。 include_directories(${PCL_INCLUDE_DIRS})#将PCL库的头文件目录添加到包含路径中 link_directories(${PCL_LIBRARY_DIRS})#将PCL库的库文件目录添加到链接器搜索路径中。 add_definitions(${PCL_DEFINITIONS})#添加PCL库的编译器定义 add_executable (cluster_extraction cluster_extraction.cpp) target_link_libraries (cluster_extraction ${PCL_LIBRARIES})#将PCL库链接到可执行文件目标。 运行结果 函数 pcl/segmentation/extract_clusters.h包含 PCL (Point Cloud Library) 中用于点云聚类的头文件 补充内容
http://www.w-s-a.com/news/26395/

相关文章:

  • 网站能给企业带来什么上饶市网站建设公司
  • 学做网站卖东西去哪学南宁网站建设gxjzdrj
  • 欧美网站建设案例网站开发 男生
  • 网站正在开发中做电子元器件的网站
  • 做网站搭建的公司中国建设银行官网站u盾证书
  • 大连哪里有手机自适应网站建设公司网站介绍模板 html
  • 佛山模板建站宣传片制作公司电话
  • 文字网站居中能自己做网站接业务吗
  • 免备案自助建站网站广州珈瑶公司是哪一年注册的
  • ps做网站界面wordpress为图片添加圆角
  • seo优化推广业务员招聘seo顾问服务福建
  • 成都私人网站建设seo网站推广方案策划书
  • 广州网站建设工作室wordpress log
  • 网站后台添加wordpress h1标签优化
  • 自己做网站都需要什么高密 网站建设
  • 网站语言选择郑州本地做团购的网站
  • dw网页设计模板图片谷歌wordpress优化
  • 网站seo优化要怎么做礼品公司怎么做网站
  • 做网页网站需要钱吗提供常州微信网站建设
  • 网站建设文化效果广东网站建设哪家有
  • 毕业设计做网站怎样做特别一点在线网页制作软件
  • html网站代码上海这边敲墙拆旧做啥网站的比较多
  • 微网站怎么用在线crm管理系统
  • 中国城乡建设部人力网站首页如何利用某个软件做一个网站
  • 个人承接网站建设wordpress editor
  • 建站主机 wordpress专业的菏泽网站建设公司
  • 网站响应时间 标准网站建设色调的
  • 网站开发的合同网站建设 设计
  • 网站开发设置网页端口申请免费个人网站空间
  • 制作广告网站的步骤云服务器做网站