随机数

  • 一、概述
  • 二、代码
  • 二、结果

一、概述

  提取多边形内部的点。

二、代码

#include <iostream>
#include <pcl/io/pcd_io.h>
#include <pcl/filters/crop_hull.h>
#include <pcl/surface/concave_hull.h>
#include <pcl/surface/convex_hull.h>
#include <pcl/visualization/cloud_viewer.h>int main(int argc, char** argv)
{pcl::PointCloud<pcl::PointXYZ>::Ptr cloud(new pcl::PointCloud<pcl::PointXYZ>);//加载点云数据pcl::PCDReader reader;reader.read("pig2.pcd", *cloud);pcl::PointCloud<pcl::PointXYZ>::Ptr bound(new pcl::PointCloud<pcl::PointXYZ>); //创建多边形区域指针bound->push_back(pcl::PointXYZ(0.1, 0.1, 0));                                  //根据顶点坐标创建区域bound->push_back(pcl::PointXYZ(0.1, -0.1, 0));bound->push_back(pcl::PointXYZ(-0.1, 0.1, 0));bound->push_back(pcl::PointXYZ(-0.1, -0.1, 0));bound->push_back(pcl::PointXYZ(0.15, 0.1, 0));pcl::ConvexHull<pcl::PointXYZ> hull; //建立一个凸包对象hull.setInputCloud(bound);           //输入设置好的凸包范围hull.setDimension(2);              //设置凸包的维度std::vector<pcl::Vertices> polygons; //设置动态数组用于保存凸包顶点//设置点云用于描述凸包的形状pcl::PointCloud<pcl::PointXYZ>::Ptr surface_hull(new pcl::PointCloud<pcl::PointXYZ>); hull.reconstruct(*surface_hull, polygons);    //计算凸包结果pcl::PointCloud<pcl::PointXYZ>::Ptr objects(new pcl::PointCloud<pcl::PointXYZ>);pcl::CropHull<pcl::PointXYZ> crop;    //创建CropHull对象crop.setDim(2);                       //设置维度crop.setInputCloud(cloud);            //设置输入点云crop.setHullIndices(polygons);      //输入封闭多边形的顶点crop.setHullCloud(surface_hull);    //输入封闭多边形的形状crop.filter(*objects);              //执行CropHull滤波并存储相应的结果std::cout << "Cloud after crop has:" << objects->size() << " data points." << std::endl;//初始化共享指针用于进行可视化boost::shared_ptr<pcl::visualization::PCLVisualizer> view(new pcl::visualization::PCLVisualizer("crophull display"));view->setBackgroundColor(255, 255, 255);//利用多视口输出可视化结果int v1(0);view->createViewPort(0.0, 0.0, 0.33, 1, v1);view->setBackgroundColor(255, 255, 255, v1);view->addPointCloud(cloud, "cloud", v1);view->setPointCloudRenderingProperties(pcl::visualization::PCL_VISUALIZER_COLOR, 1, 0, 0, "cloud");view->setPointCloudRenderingProperties(pcl::visualization::PCL_VISUALIZER_POINT_SIZE, 3, "cloud");view->addPolygon<pcl::PointXYZ>(surface_hull, 0, .069 * 255, 0.2 * 255, "backview_hull_polyLine1", v1);int v2(0);view->createViewPort(0.33, 0.0, 0.66, 1, v2);view->setBackgroundColor(255, 255, 255, v2);view->addPointCloud(surface_hull, "surface_hull", v2);view->setPointCloudRenderingProperties(pcl::visualization::PCL_VISUALIZER_COLOR, 1, 0, 1, "surface_hull");view->setPointCloudRenderingProperties(pcl::visualization::PCL_VISUALIZER_POINT_SIZE, 8, "surface_hull");view->addPolygon<pcl::PointXYZ>(surface_hull, 0, .069 * 255, 0.2 * 255, "backview_hull_polyLine1", v2);int v3(0);view->createViewPort(0.66, 0.0, 1, 1, v3);view->setBackgroundColor(255, 255, 255, v3);view->addPointCloud(objects, "objects", v3);view->setPointCloudRenderingProperties(pcl::visualization::PCL_VISUALIZER_COLOR, 0, 1, 0, "objects");view->setPointCloudRenderingProperties(pcl::visualization::PCL_VISUALIZER_POINT_SIZE, 3, "objects");while (!view->wasStopped()){view->spinOnce(1000);}system("pause");return 0;
}

二、结果

PCL 任意多边形内部点云提取相关推荐

  1. 求任意多边形内部水平方向似最大矩形算法实现

    背景说明 前段时间有个求点是否在多边形内部的需求,折腾了不少时间,现截取其中的的重点部分--求任意多边形内部水平方向似最大矩形--来搞篇博客. 求点是否在多边形内部这个算法很容易搞,一搜一大把,但数据 ...

  2. 一种求任意多边形内部水平方向似最大矩形的算法

    文章版权由作者李晓晖和博客园共有,若转载请于明显处标明出处:http://www.cnblogs.com/naaoveGIS/ 1.背景 在前一篇中,我们探讨了如何求凸多边形中的似最大圆,但是针对实际 ...

  3. PCL学习一:点云与PCL基础

    参考引用 黑马机器人 | PCL-3D点云 PCL(Point Cloud Library)学习记录 PCL点云库学习笔记(文章链接汇总) 1. 点云概述 点云(Point Cloud)是三维空间中, ...

  4. PCL中的OpenNI点云获取框架(OpenNI Grabber Framework in PCL)

    从PCL 1.0开始,PCL(三维点云处理库Point Cloud Library)提供了一个通用采集接口,这样可以方便地连接到不同的设备及其驱动.文件格式和其他数据源.PCL集成的第一个数据获取驱动 ...

  5. 判定点是否在不规则多边形内部的问题

    2019独角兽企业重金招聘Python工程师标准>>> 问题如下: 话说在平面内有一个任意的不规则的封闭多边形,另外在这个平面内还有一个点,问题:如何高效的判定这个点是在这个多边形内 ...

  6. [转]如何判断一个点是否在一个多边形内部

    原文地址:http://hi.baidu.com/wayright/item/ad18e4c0c5446b2dee4665c9 在多边性的存储中,每一个多边形都是由一系列连续的点组成,例如保存为数组P ...

  7. 【几何】计算任意多边形面积

      给定一系列有序的线段(比如按顺序给定每个线段的左端点坐标),求这些线段围成的多边形的面积,公式为:   任意一个点与顺序相邻两点组成的三角形面积之和   分为凸多边形和凹多边形分别证明: 一.凸多 ...

  8. 判断一个坐标点是否在不规则多边形内部的算法

    参考:https://wrf.ecse.rpi.edu//Research/Short_Notes/pnpoly.html 在GIS(地理信息管理系统)中,判断一个坐标是否在多边形内部是个经常要遇到的 ...

  9. 判断一个点是否在多边形内部

    一.比如说,我就随便涂了一个多边形和一个点,现在我要给出一种通用的方法来判断这个点是不是在多边形内部(别告诉我用肉眼观察--). 首先想到的一个解法是从这个点做一条射线,计算它跟多边形边界的交点个数, ...

最新文章

  1. 程序世界的秘密(上)
  2. ASP.NET MVC Model绑定小结
  3. c# winform程序调用托管dll(c#的dll),使用添加引用和动态加载dll
  4. 500位全球算法开发者零奖金参加阿里云天池大赛 AI预测台风助力防灾减灾
  5. Codeforces Round #409 (rated, Div. 2, based on VK Cup 2017 Round 2)C. Voltage Keepsake
  6. C# 中执行 msi 安装
  7. 数组作为方法的返回值
  8. Vue的基本环境搭建
  9. zabbix自定义用户key
  10. Allegro学习笔记:Allegro快速入门之一--查看BRD Layout
  11. 全国计算机等级考点申请,全国计算机等级考试(NCRE)考点申请书某高校(367)
  12. 批量安装windows系统补丁包
  13. android格式化外置u盘,Android5.x+ 格式化外部存储(u盘, sdcard)的方法
  14. torch.sqrt(lhs**2) 与torch.abs(lhs)在pytorch中的差异
  15. 2022年中职组“网络安全”赛项湖南省任务书
  16. vertica用户自定义扩展介绍
  17. Mac如何做才能彻底清理垃圾
  18. linux服务器的Gzip文件压缩方法
  19. 微积分 = 微分 + 积分
  20. 爬虫学习笔记(二)http请求详解

热门文章

  1. 【实用】把jar转换成exe文件
  2. 原生态REST服务环境
  3. inotify + rsync 打造文件实时同步
  4. 无法安装Hyper-V:虚拟机监控程序已在运行中的详细解决思路
  5. Python爬虫股票评论,snowNLP简单分析股民用户情绪(草稿)
  6. parallels desktop 安装centos7默认密码和root问题
  7. 一文读懂 shell 脚本编程
  8. 溢出的文字省略号显示
  9. dir命令在windows中的使用
  10. 【leedcode】0004. 两个有序数组的中位数