凸包凹包的概念详见
凹凸包



凸包

凹包

下面附上代码:

#include <pcl/io/pcd_io.h>
#include <pcl/io/vtk_io.h>
#include <pcl/surface/concave_hull.h>
#include <pcl/surface/convex_hull.h>#include <pcl/console/print.h>
#include <pcl/console/parse.h>
#include <pcl/console/time.h>using namespace std;
using namespace pcl;
using namespace pcl::io;
using namespace pcl::console;float default_alpha = 0.15f;void
printHelp (int, char **argv)
{print_error ("Syntax is: %s input.pcd output.vtk [optional_arguments]\n", argv[0]);print_info ("  where the optional arguments are:\n");print_info ("                     -alpha X = the alpha value for the ConcaveHull (Alpha Shapes) algorithm. If alpha is not specified, the tool will run the ConvexHull method (default: ");print_value ("%f", default_alpha); print_info (")\n");
}void
compute (PointCloud<PointXYZ>::ConstPtr cloud_in,bool convex_concave_hull,float alpha,PolygonMesh &mesh_out)
{if (!convex_concave_hull){print_info ("Computing the convex hull of a cloud with %lu points.\n", cloud_in->size ());ConvexHull<PointXYZ> convex_hull;convex_hull.setInputCloud (cloud_in);convex_hull.reconstruct (mesh_out);}else{print_info ("Computing the concave hull (alpha shapes) with alpha %f of a cloud with %lu points.\n", alpha, cloud_in->size ());ConcaveHull<PointXYZ> concave_hull;concave_hull.setInputCloud (cloud_in);concave_hull.setAlpha (alpha);concave_hull.reconstruct (mesh_out);}
}/* ---[ */
int
main (int argc, char** argv)
{print_info ("Compute the convex or concave hull of a point cloud. For more information, use: %s -h\n", argv[0]);if (argc < 3){printHelp (argc, argv);return (-1);}// Command line parsingbool convex_concave_hull = false;float alpha = default_alpha;if (parse_argument (argc, argv, "-alpha", alpha) != -1)convex_concave_hull = true;vector<int> pcd_file_indices;pcd_file_indices = parse_file_extension_argument (argc, argv, ".pcd");if (pcd_file_indices.size () != 1){print_error ("Need one input PCD file to continue.\n");return (-1);}vector<int> vtk_file_indices;vtk_file_indices = parse_file_extension_argument (argc, argv, ".vtk");if (vtk_file_indices.size () != 1){print_error ("Need one output VTK file to continue.\n");return (-1);}// Load in the point cloudPointCloud<PointXYZ>::Ptr cloud_in (new PointCloud<PointXYZ> ());if (loadPCDFile (argv[pcd_file_indices[0]], *cloud_in) != 0){print_error ("Could not load input file %s\n", argv[pcd_file_indices[0]]);return (-1);}// Compute the hullPolygonMesh mesh_out;compute (cloud_in, convex_concave_hull, alpha, mesh_out);// Save the meshio::saveVTKFile (argv[vtk_file_indices[0]], mesh_out);return (0);
}

来源:PCL官方示例

PCL计算ConvexHull凸包、ConcaveHull凹包相关推荐

  1. 基于点云凸包的凹包获取方法

    文章目录 一.简介 二.实现代码 三.实现效果 参考文献 一.简介 因为受到参考文献[1]的启发,所以尝试着在三维凸包的基础上,通过去除较大面积的三角面片来得到一个凹包(这里我们是通过指定一个面积阈值 ...

  2. 凸包+凹包+凸边凹化算法

    时针法 一.凸包:最大面积边界->外围边界 离散点建立最小外围边界即凸多边形,如下图所示,离散点建立凸包过程 思路: step1:找到最外围的一个初始边界点A(Xa,Ya),存入边界点集合 st ...

  3. 计算点云的二维面积(凹包面积计算、平面旋转)

    计算点云面积时,cloud compare采取的策略是将点云网格化,然后计算网格面积.这样构网的情况往往会影响到后续面积的计算精度.这里采取了一种凹包面积计算的策略.主要步骤包括: 1.将点云旋转至与 ...

  4. 二维点集求外轮廓Java_从二维点集重建平面形状-浅议凹包算法

    问题背景 近期遇到一个计算几何问题,需要从点集中重建一个合理的几何形状.这个问题既有二维的也有三维的,二维的情况相对简单一点,即给出平面区域的一系列散点,求出一定程度上反映这些散点轮廓的平面多边形,给 ...

  5. matlab 凹包,二维点集凹包算法介绍

    最近遇到一个求二维点集凹包的问题,凹包的叫法不知道是否准确,问题可以描述为:(原文下载在文章末尾) 在二维平面上有一系列的点,求能包围所有点集的二维多边形.(好像搜"离散点边界"或 ...

  6. R语言偏相关或者部分相关性系数计算实战:使用psych包计算(Partial Correlation)偏相关系数、拟合回归模型使用两个回归模型的残差计算偏相关性系数

    R语言偏相关或者部分相关性系数计算实战:使用psych包计算(Partial Correlation)偏相关系数.拟合回归模型使用两个回归模型的残差计算偏相关性系数 目录

  7. R语言编写自定义描述统计计算函数、使用doBy包的summaryBy函数计算不同分组(group)的描述性统计值(Descriptive statistics by group、样本个数、均值、标准)

    R语言编写自定义描述统计计算函数.使用doBy包的summaryBy函数计算不同分组(group)的描述性统计值(Descriptive statistics by group using summa ...

  8. R语言偏相关或者部分相关性系数计算实战:使用psych包计算(Partial Correlation)偏相关或者部分相关性系数并用建设检验检验相关性的显著性

    R语言偏相关或者部分相关性系数计算实战:使用psych包计算(Partial Correlation)偏相关或者部分相关性系数并用建设检验检验相关性的显著性 目录

  9. Numpy:高性能科学计算和数据分析的基础包

    Numpy:高性能科学计算和数据分析的基础包 概述 基础数据类型:ndarray数组 为什么引入ndarray数组 案例1:实现a+1的计算 案例2:实现c=a+b的计算 创建ndarray数组 查看 ...

最新文章

  1. uboot源码分析笔记
  2. linux .sh文件 命令如何写,Linux下面使用命令如何运行.sh文件的两种解决办法
  3. getServletPath与getRequestURI
  4. 《从0到1学习Flink》—— Flink 读取 Kafka 数据批量写入到 MySQL
  5. linux mount挂载命令(将分区挂接到Linux的一个文件夹下,从而将分区和该目录联系起来)
  6. 树莓派的linux系统安装,树莓派安装Linux操作系统
  7. inux系统中如何进入退出vim编辑器
  8. 多多进宝推广团队_多多进宝推广形式及推手寻找、佣金结算方式是怎样的?
  9. Android 系统(197)---USB VID
  10. pytorch 关于显存增长原因以及显存占用优化
  11. [原]正则表达式模式匹配入门
  12. 手动释放linux服务器内存
  13. xmpp安装到Linux服务器,在Ubuntu 18.04/16.04系统中安装Ejabberd XMPP Server的方法
  14. 联想x3850x6重装系统,ibm x3850 x6安装系统,2015ibm服务器x3850x6
  15. h5、app、小程序 互相跳转打开的方式总结
  16. python kayb算法之从一组序列当中获取一组与目标值最接近的算法
  17. 基于CSS mask和clip-path实现切角的技巧
  18. php不支持png图片裁剪,thinkphp5.1 图片处理类think-image的png 缩略,裁剪和添加水印透明度丢失的问题...
  19. mysql如何修改学生表_MySQL 详细单表增删改查crud语句
  20. 欧姆龙, PLC CJ2M标准程序,一共控制12个伺服电机 ,气缸若干,包含轴点动,回零,相对与绝对定位

热门文章

  1. linux 2.6.30 内核编译 提示 ‘make[1]: *** [arch/x86/vdso/vdso.so.dbg] Error 1’ 错误
  2. 数据仓库 — 01_项目需求分析与技术选型(数仓概念、项目需求及架构设计、数据生成模块格式要求)
  3. 文件系统学习实例(之exFAT)
  4. 行人重识别(ReID) ——数据集描述 CUHK03
  5. python爬取天气存入excel_Python接口读取json天气预报数据自动写入到Excel表格
  6. 关于 1000台计算机的保险英语,如何为熊孩子“买对”保险?服务1000个家庭,我建议这样买...
  7. java 利用反映射_Java-反射的理解与使用-(原创)
  8. Ubuntu20上安装“orocos-bfl”
  9. 制作一款Arduino酒精检测仪的设计
  10. jQuery(三)HTML