PCL 三维点云轮廓提取

建一个pclfive文件夹,建一个pclfive.cpp文档如下:

#include <iostream>
#include <pcl/range_image/range_image.h>//深度图有关文件
#include <pcl/visualization/pcl_visualizer.h>//点云可视化头文件
#include <pcl/io/pcd_io.h>//pcd文件输入/输出
#include <pcl/visualization/range_image_visualizer.h>//rangeImage可视化头文件
#include <pcl/common/common_headers.h>
#include <pcl/console/parse.h>//命令行参数解析
#include <boost/thread/thread.hpp>//多线程文件
#include <pcl/visualization/common/float_image_utils.h>//保存深度图像
#include <pcl/io/png_io.h>//保存深度图像int main (int argc, char** argv) {//读入点云数据// pcl::PointCloud<pcl::PointXYZ>::Ptr cloud_in(new pcl::PointCloud<pcl::PointXYZ>);// pcl::io::loadPCDFile("room_scan1.pcd",*cloud_in);pcl::PointCloud<pcl::PointXYZ>::Ptr cloud_in(new pcl::PointCloud<pcl::PointXYZ>);//生成数据for (float y=-0.5f; y<=0.5f; y+=0.01f) {for (float z=-0.5f; z<=0.5f; z+=0.01f) {pcl::PointXYZ point;point.x = 2.0f - y;point.y = y;point.z = z;cloud_in->points.push_back(point);}}cloud_in->width = (uint32_t) cloud_in->points.size();cloud_in->height = 1;//以1度为角分辨率,从上面创建的点云创建深度图像。float angularResolution = (float) (  1.0f * (M_PI/180.0f));
// 1度转弧度float maxAngleWidth     = (float) (360.0f * (M_PI/180.0f));
// 360.0度转弧度float maxAngleHeight    = (float) (180.0f * (M_PI/180.0f));
// 180.0度转弧度Eigen::Affine3f sensorPose = (Eigen::Affine3f)Eigen::Translation3f(0.0f, 0.0f, 0.0f);pcl::RangeImage::CoordinateFrame coordinate_frame = pcl::RangeImage::CAMERA_FRAME;float noiseLevel=0.00;float minRange = 0.0f;int borderSize = 1;pcl::RangeImage rangeImage;rangeImage.createFromPointCloud(*cloud_in, angularResolution, maxAngleWidth, maxAngleHeight, sensorPose, coordinate_frame, noiseLevel, minRange, borderSize);
std::cout << rangeImage << "\n";//重载运算符<<pcl::visualization::PCLVisualizer::Ptr viewer(new pcl::visualization::PCLVisualizer("CloudPointView"));
viewer->initCameraParameters();int v1(0);
//viewer->createViewPort(0,0,0.5,1,v1);
viewer->setBackgroundColor(255,255,255,v1);
pcl::visualization::PointCloudColorHandlerCustom<pcl::PointXYZ> color1(cloud_in->makeShared(),255,0,0);
viewer->addPointCloud(cloud_in->makeShared(),color1,"pointCloud",v1);viewer->addCoordinateSystem();
//viewer->spin();//这句话不注释掉会导致只显示点云图而不显示深度图的窗口//save depth picturefloat *ranges = rangeImage.getRangesArray();unsigned char* rgb_image = pcl::visualization::FloatImageUtils::getVisualImage(ranges,rangeImage.width,rangeImage.height);pcl::io::saveRgbPNGFile("saveRangeImageRGB.png",rgb_image,rangeImage.width,rangeImage.height);std::cerr << "Picture Saved!" << std::endl;//可视化深度图像rangeImage
pcl::visualization::RangeImageVisualizer range_image_widget("Range image");//创建Range image显示的对象
range_image_widget.setWindowTitle("RangeImage");
range_image_widget.showRangeImage(rangeImage);while (!range_image_widget.wasStopped ()&& !viewer->wasStopped()){range_image_widget.spinOnce ();viewer->spinOnce();pcl_sleep (0.01);}return  0 ;
}

在同文件夹下写入配置文件:CMakeLists.txt,如下:

cmake_minimum_required(VERSION 2.6)
project(pclfive)find_package(PCL 1.2 REQUIRED)include_directories(${PCL_INCLUDE_DIRS})
link_directories(${PCL_LIBRARY_DIRS})
add_definitions(${PCL_DEFINITIONS})add_executable(pclfive pclfive.cpp)target_link_libraries (pclfive ${PCL_LIBRARIES})install(TARGETS pclfive RUNTIME DESTINATION bin)

在同文件夹下建立build建一个build文件夹。
开始编译:
1、在build文件夹中打开终端(在文件夹下右键+T)
2、终端输入

cmake ..

3、终端输入

make

4、终端输入

./pclfive

PCL 三维点云轮廓提取相关推荐

  1. 三维点云目标提取总结(续)

    三维点云目标提取(续) 3.三维点云目标提取 3.1一般流程 先根据个人认识总结一下目标提取的一般性步骤: 如上所示,三维点云的目标提取关键性的两步即为:特征提取与选择.分类,是不是整个方法流程与图像 ...

  2. 3D点云基础知识(二)-bilibili视频资源整理(二)鞋点胶点云轮廓提取

    资料来源:超人视觉免费启蒙三维课程入门(第六节)3D鞋点胶的点云边界(轮廓)提取 相似案例:Halcon三维测量(3):鞋底涂胶+边缘提取 Halcon学习方法强调:从案例当中学习:最重要是思路和算子 ...

  3. PCL三维点云拼接融合技术

    转自:https://blog.csdn.net/dcba2014/article/details/71859375?locationNum=2&fps=1 本例使用pcd格式点云文件进行配准 ...

  4. 简单平面点云的内外侧轮廓提取

    原点云如图所示: 外侧轮廓提取用的方法是经纬线扫描法,全轮廓提取的方法是alpha shapes算法(点云边界提取方法总结),从全轮廓中剔除外侧轮廓得到内侧轮廓. alpha shapes算法轮廓提取 ...

  5. 概述—基于机载LiDAR点云数据的建筑物轮廓提取

    一.机载LiDAR系统介绍 机载激光雷达测量技术的英文名称是LiDAR, LiDAR是英文Light Detection And Ranging(光探测与光测距)的缩写,是融合了 GPS.INS.激光 ...

  6. PCL+opencv通过2D方式提取点云边缘

    1.2D方法提取边缘的原因 如上图所示我们通过PCL常规的方法提取边缘后是有内边缘和外边缘的,假设我们需要的是外边缘可能需要做一些诸如聚类分割的方法,给我们带来许多不便. 2.2D方法的思路 熟悉op ...

  7. 使用PCL从CAD模型中提取不同视角下的点云

    使用PCL从CAD模型中提取不同视角下的点云 最近在做一个关于提取不同视角下点云的算法,看了许多关于这方面的博客,也查了许多资料. 链接:https://blog.csdn.net/qq_196009 ...

  8. PCL中点云关键点提取

    PCL中点云关键点提取 1 关键点概念及相关算法 1.1 NARF关键点 1.2 Harris关键点 1.3 PCL中keypoints模块及类介绍 2 关键点入门级实例解析 2.1 如何从深度图像中 ...

  9. PCL 三维 CAD 模型 (obj、ply) 转点云 pcd 文件格式

    PCL 三维 CAD 模型 (obj.ply) 转点云 pcd 文件格式 利用 PCL 自带的程序可以将三维 CAD 模型 (obj.ply) 文件转为点云 pcd 文件格式. 打开安装的 PCL 安 ...

最新文章

  1. C语言之分支结构 if(一)
  2. windows部署微服务jar包 yml_杰克布开源项目,低代码开发框架,Docker快速部署
  3. Kali Linux安装OpenVAS
  4. Linux复习资料——MySQL-client-5.6.50-1.el7.x86_64与MySQL-server-5.6.50-1.el7.x86_64包安装MySQL全过程
  5. git 使用_Git使用总结
  6. SqlDataReader对象的NextResult方法读取存储过程多个结果集
  7. matlab 安装jdbc.jar
  8. UVA 1611 Crane
  9. 报错:The following signatures couldn‘t be verified because the public key is not available: NO_PUBKEY
  10. 二、语音合成(TTS)
  11. sda、sdb 在linux中是什么意思
  12. 100个精彩的开源游戏
  13. C# Span 入门
  14. 一款在线免费的甘特图,让你轻松管理项目进度
  15. 微信朋友圈输入框加发送测试用例总结
  16. mysql 计算gps坐标距离_mysql实现经纬度计算两个坐标之间的距离
  17. 阿里云ACP云计算错题集41-70
  18. conda安装新环境
  19. [转载]中国最致命的薄弱环节!(一个机械类毕业生的心声)
  20. js数组常用方法(19种)|你会的到底有多少呢?

热门文章

  1. 栈实现算术表达式求值
  2. 使用python爬取豆瓣
  3. 查看Linux系统版本信息
  4. strdup和strndup函数
  5. Hibernate-12-新加联系人操作
  6. ssl证书的注册与nginx的配置
  7. 姓名学三才数理怎么算?怎样才能算吉凶?姓名打分PHP源码
  8. AI测试SQL设计--常用SQL与基础知识总结
  9. linux 安腾,Linux/Windows谁能推动安腾增长?分歧很大(转)
  10. 读《费马大定理——一个困惑了世间智者358年的迷》