点云库PCL学习笔记 -- 输入输出IO -- 2.向PCD文件中写入点云数据
写入PCD文件代码pcd_write.cpp
#include <iostream>
#include <pcl/io/pcd_io.h>
#include <pcl/point_types.h>
int
main(int argc,char**argv)
{
//生成一个点云实例cloud
pcl::PointCloud<pcl::PointXYZ> cloud;
//创建点云的数据
cloud.width=5;
cloud.height=1;
cloud.is_dense=false;
cloud.points.resize(cloud.width*cloud.height);
//以随机数的方式写入点云文件
for(size_t i=0;i<cloud.points.size();++i)
{
cloud.points[i].x=1024*rand()/(RAND_MAX+1.0f);
cloud.points[i].y=1024*rand()/(RAND_MAX+1.0f);
cloud.points[i].z=1024*rand()/(RAND_MAX+1.0f);
}
//把PointCloud对象数据储存在test_pcd.pcd文件中
pcl::io::savePCDFileASCII("test_pcd.pcd",cloud);
//打印输出储存的点云数据
std::cerr<<"Saved "<<cloud.points.size()<<" data points to test_pcd.pcd."<<std::endl;
for(size_t i=0;i<cloud.points.size();++i)
std::cerr<<" "<<cloud.points[i].x
<<" "<<cloud.points[i].y
<<" "<<cloud.points[i].z<<std::endl;
return(0);
}
设置编译文件CMakeLists.txt
cmake_minimum_required(VERSION 2.8 FATAL_ERROR)
project(pcd_write)
find_package(PCL 1.2 REQUIRED)
include_directories(${PCL_INCLUDE_DIRS})
link_directories(${PCL_LIBRARY_DIRS})
add_definitions(${PCL_DEFINITIONS})
add_executable(pcd_write pcd_write.cpp)
target_link_libraries(pcd_write ${PCL_LIBRARIES})
编译
mkdir build
cd build/
cmake ..
make
执行程序
cd ..
./build/pcd_write
结果如下
工程目录中会多出一个test_pcd.pcd
的点云文件
使用pcl_viewer test_pcd.pcd
查看该PCD文件,5个点的图像数据