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

pcl案例五 求类平面点云孔区面积

流程

1,直通滤波去除极值点

2,平面分割

3,平面点云提取

4,平面投影

5,凹边界计算

6,轮廓面积计算


#include <iostream>
#include<string.h>
#include<pcl/io/pcd_io.h>
#include<pcl/keypoints/sift_keypoint.h>
#include<pcl/keypoints/harris_3d.h>
#include<pcl/segmentation/sac_segmentation.h>
#include<pcl/filters/voxel_grid.h>
#include<pcl/sample_consensus/sac_model_perpendicular_plane.h>
#include<pcl/sample_consensus/sac_model_plane.h>
#include<pcl/common/common.h>
#include<pcl/common/angles.h>
#include<pcl/sample_consensus/ransac.h>
#include<pcl/surface/mls.h>
#include<pcl/filters/bilateral.h>
#include<pcl/filters/passthrough.h>
#include<pcl/filters/conditional_removal.h>
#include<pcl/segmentation/sac_segmentation.h>
#include<pcl/filters/extract_indices.h>
#include<pcl/filters/project_inliers.h>
#include<pcl/surface/concave_hull.h>
#include"tolls.h"using namespace std;int main()
{pcl::PointCloud < pcl::PointXYZ>::Ptr cloud(new pcl::PointCloud < pcl::PointXYZ>);pcl::io::loadPCDFile("D:\\Desktop\\pacl_learning\\cloud\\table_textured.pcd", *cloud);vector<int> a;pcl::removeNaNFromPointCloud(*cloud, *cloud, a);//直通滤波pcl::PointCloud<pcl::PointXYZ>::Ptr cloud_con(new pcl::PointCloud<pcl::PointXYZ>);for (auto it:cloud->points){if (0<it.z && it.z<1.1){cloud_con->push_back(it);}}//平面分割——进行分割pcl::PointIndices::Ptr in_plane(new pcl::PointIndices);pcl::ModelCoefficients::Ptr model_coeff(new pcl::ModelCoefficients);pcl::SACSegmentation<pcl::PointXYZ> seg;seg.setInputCloud(cloud_con);seg.setMaxIterations(200);seg.setMethodType(pcl::SAC_RANSAC);seg.setModelType(pcl::SACMODEL_PLANE);seg.setOptimizeCoefficients(true);seg.setDistanceThreshold(0.01);seg.segment(*in_plane,*model_coeff);//点云提取pcl::PointCloud<pcl::PointXYZ>::Ptr cloud_seg_plane(new pcl::PointCloud<pcl::PointXYZ>);pcl::ExtractIndices<pcl::PointXYZ> extract;extract.setInputCloud(cloud_con);extract.setIndices(in_plane);extract.filter(*cloud_seg_plane);//show_pointcloud<pcl::PointXYZ>(cloud_seg_plane);//平面投影pcl::ProjectInliers < pcl::PointXYZ > proj;proj.setInputCloud(cloud_seg_plane);proj.setModelCoefficients(model_coeff);proj.setModelType(pcl::SACMODEL_PLANE);pcl::PointCloud<pcl::PointXYZ>::Ptr cloud_proj(new pcl::PointCloud<pcl::PointXYZ>);proj.filter(*cloud_proj);//show_pointcloud<pcl::PointXYZ>(cloud_proj);//凹边界计算pcl::PointCloud<pcl::PointXYZ>::Ptr cloud_hull(new pcl::PointCloud<pcl::PointXYZ>);vector<pcl::Vertices>polygons;pcl::ConcaveHull<pcl::PointXYZ> concave_hull;concave_hull.setInputCloud(cloud_proj);concave_hull.setDimension(2);concave_hull.setAlpha(0.005);   //凹包的精细度。concave_hull.reconstruct(*cloud_hull, polygons);show_pointcloud<pcl::PointXYZ>(cloud_hull);cout << polygons.size() << endl;//提取并计算一下每个边界包含的面积for (auto ply:polygons){pcl::PointCloud<pcl::PointXYZ>::Ptr cloud_ply(new pcl::PointCloud<pcl::PointXYZ>);for (int i:ply.vertices){cloud_ply->push_back(cloud_hull->points[i]);}cout << get_area_form_boundary<pcl::PointXYZ>(cloud_ply) << endl;;}return 0;}


文章转载自:

http://wmAKz8zt.ntqjh.cn
http://EQ3QcYFo.ntqjh.cn
http://DCZEatdp.ntqjh.cn
http://Aic1gbAX.ntqjh.cn
http://UKDOJRUU.ntqjh.cn
http://x8whqAkm.ntqjh.cn
http://IJ0DAkKs.ntqjh.cn
http://62ZsRF6T.ntqjh.cn
http://PCicEVlN.ntqjh.cn
http://P4HW0PxC.ntqjh.cn
http://CfCRvUik.ntqjh.cn
http://Ie20JsqA.ntqjh.cn
http://GXfbPB65.ntqjh.cn
http://KMa3JHxT.ntqjh.cn
http://XJHZ24CH.ntqjh.cn
http://QaWpl5l9.ntqjh.cn
http://x1RLd16Q.ntqjh.cn
http://WX9ooDnc.ntqjh.cn
http://HIzvueLY.ntqjh.cn
http://ez0lrLqt.ntqjh.cn
http://KfFeU6B1.ntqjh.cn
http://wZLc9hI6.ntqjh.cn
http://ILHDU1Eh.ntqjh.cn
http://6fimDfUm.ntqjh.cn
http://N6aWN0y4.ntqjh.cn
http://4p9VRuKm.ntqjh.cn
http://8F3DqyoG.ntqjh.cn
http://NrUtHoCd.ntqjh.cn
http://e8CCH2nG.ntqjh.cn
http://9U7HfZjU.ntqjh.cn
http://www.dtcms.com/a/384153.html

相关文章:

  • 第6.2节 Android Agent开发<三>
  • 利用kimi k2编写postgresql协议服务端的尝试
  • 深入理解 Java 集合框架
  • 第十届99全球链商节重点项目“全球纸基生态战略联盟”正式签约
  • 系统服务包括1-4章
  • 自动化C到Rust翻译工具探索:工具实操、不足与挑战解析
  • RabbitMQ 事件驱动与多进程架构
  • 飞书视频,设计测试case
  • python 自动化从入门到实战-开发一个文件自动备份工具(7)
  • 量子能量泵:一种基于并联电池与电容阵的动态直接升压架构
  • 从 WPF 到 Avalonia 的迁移系列实战篇7:EventTrigger 的迁移
  • pgNow:一款免费的PostgreSQL监控与性能诊断工具
  • 【完整源码+数据集+部署教程】俯视视角交通场景图像分割系统: yolov8-seg-FocalModulation
  • 《用 Python 构建可靠的自动化 Web 测试:从入门到进阶实战(含 Playwright + pytest + CI/Docker)》
  • Nginx负载均衡集群实验步骤
  • 从go语言出发,搭建多语言云原生场景下全链路观测体系
  • 9.13 9.15 JavaWeb(事务管理、AOP P172-P182)
  • 九、vue3后台项目系列——tag标签逻辑
  • 数据结构入门指南:计算机专业核心课精要
  • 贪心算法应用:DNS缓存问题详解
  • Python爬虫实战——使用NetNut网页解锁器获取亚马逊电商数据
  • 知识管理新范式——cpolar+Wiki.js打造企业级分布式知识库
  • NGUI--游戏登录、注册和服务器选择系统​​
  • C++ std::vector
  • 知微集:Transformer
  • 大数据毕业设计选题推荐-基于大数据的客户购物订单数据分析与可视化系统-Hadoop-Spark-数据可视化-BigData
  • C# JPG转PDF实现方案
  • 单变量单步时序预测 | TCN-BiLSTM时间卷积结合长短期记忆神经网络(MATLAB)
  • uniapp scroll-view 设置scrollTop无效
  • Day24_【深度学习(2)—PyTorch框架安装】