Ubuntu下pcl生成随机点云

本文档展示了如何使用CMakeLists.txt配置一个简单的C++项目,该项目利用PCL库生成并写入点云数据到PCD文件。通过随机生成点云数据并保存到'test_pcd.pcd',程序演示了PCL的点云处理能力。
摘要由CSDN通过智能技术生成

CMakeLists.txt 写入

#声明最低版本要求
cmake_minimum_required(VERSION 2.6 FATAL_ERROR)
 #声明项目
 project(pcl-pcd_write)
 #自动寻找构建构成需要的package
 find_package(PCL 1.7 REQUIRED)
 #包含头文件位置文件夹
 include_directories(${PCL_INCLUDE_DIRS})
 #添加链接的lib库文件路径
 link_directories(${PCL_LIBRARY_DIRS})
 #添加相关定义
 add_definitions(${PCL_DEFINITIONS})
#源文件是 pcb_write.cpp 一个C++文件,pcb是一种点云格式
#pcb_write是执行文件,生成之后./即可运行
add_executable (pcd_write pcd_write.cpp)
#执行文件连接到库
target_link_libraries (pcd_write ${PCL_LIBRARIES})

pcd_write.cpp 写入

//包含iostream库
 #include <iostream>
 //包含头文件:pcd_io/point_types/time
 #include <pcl/io/pcd_io.h>
 #include <pcl/point_types.h>
 #include<time.h>
 //主函数
 int main ()
 {
   srand((int)time(0));//以当前事件对应的int值为随机序列起点
   pcl::PointCloud<pcl::PointXYZ> cloud;//声明一个名为cloud的点云
  
  // Fill in the cloud data
  cloud.width    = 5;//点云宽度与点云大小相同,为5
  cloud.height   = 1;//高度为1
  cloud.is_dense = false;//无序点云
  cloud.resize (cloud.width * cloud.height);//resize点云
//利用for循环+auto&给点云的x/y/z赋值
  for (auto& point: cloud)
  {
    point.x = 1024 * rand () / (RAND_MAX + 1.0f);
    point.y = 1024 * rand () / (RAND_MAX + 1.0f);
    point.z = 1024 * rand () / (RAND_MAX + 1.0f);
  }
//保存点云,test_pcd.pcd,在执行目录下
  pcl::io::savePCDFileASCII ("test_pcd.pcd", cloud);
  //打印信息,点的数量
  std::cerr << "Saved " << cloud.size () << " data points to test_pcd.pcd." << std::endl;
//把每个点打印出来
  for (const auto& point: cloud)
    std::cerr << "    " << point.x << " " << point.y << " " << point.z << std::endl;

  return (0);
}

cmake…
make
./pcd.write

结果

然后我们就可以在相关软件平台去写入代码,对点云进行操作。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值