随机数

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

一、概述

  提取多边形内部的点。

二、代码

#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. OpenCV 笔记(05)— opencv.hpp 头文件作用(是其它所有头文件的全集)
  2. laravel项目composer安装
  3. 使用镜像加速 Rtools 下载与安装
  4. 浮点转字符串性能比较
  5. 3.递归猴子吃桃问题
  6. ftrace使用说明(二)
  7. Charles安装与入门
  8. [转]唐骏谈职场 —— 管理者要学会让员工感动
  9. 线程安全的set_「Java」 - 多线程四 amp; ThreadLocal
  10. 中止执行后超过2年_10年后超过美国!汪涛:中国GDP将达到28万亿美元
  11. 网站的友情链接是什么?
  12. 基于qt的计算机论文,一种基于Qt的科学计算器系统 毕业论文.doc
  13. 特殊字符的处理 GS RS EOT
  14. Onenote无法登录报错显示0xE000078D解决方法
  15. hive项目之微博ETL项目总结分析
  16. 联想服务器SR650升级网卡固件微码
  17. 爱情刚刚开始是最美好的
  18. 手机玩exe游戏的模拟器_安卓游戏模拟器App | 手机玩红警手机玩暗黑破坏神手机玩魔兽手机玩星际手机玩……...
  19. NPOI设置Excel下拉选项
  20. Netty空闲检测之写空闲

热门文章

  1. 简单好用的Java虚拟机监控工具——Jvmm
  2. windows ssh传文件linux,利用SSH secure Shell实现windows与linux之间传输文件
  3. 【MATLAB图解教程1】MATLAB基础知识
  4. linuxQQ总是掉线问题
  5. diskimage-builder
  6. 百度智能云×北大图书馆丨管理精细服务精准,数字化图书馆新体验
  7. 安卓端netty_有人在 Android 中使用过 Netty 框架吗?
  8. 【算法】PHP实现经典算法(上)
  9. 使用JS调用手机本地摄像头或者相册图片识别二维码/条形码
  10. 《功夫熊猫》之经典台词~~