文章目录
一、cpp
#include <iostream> //标准输入输出流
#include <pcl/io/pcd_io.h> //PCL的PCD格式文件的输入输出头文件
#include <pcl/point_types.h> //PCL对各种格式的点的支持头文件
#include <string>
int main (int argc, char** argv)
{
//设置这些点的坐标
for(int j = 1; j < 5; j++)
{
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)
{
int m = j * 10;
cloud.points[i].x = m * rand() / (RAND_MAX + 1.0f);
cloud.points[i].y = m * rand() / (RAND_MAX + 1.0f);
cloud.points[i].z = m * rand() / (RAND_MAX + 1.0f);
}
//保存到PCD文件
std::string n = "test_pcd";
char r = char(j);
n.insert(n.length() - 1, 1, r);
n += ".pcd";
pcl::io::savePCDFileASCII(n, cloud); //将点云保存到PCD文件中
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(xyz2pcd)
find_package(PCL REQUIRED)
include_directories(${PCL_INCLUDE_DIRS})
link_directories(${PCL_LIBRARY_DIRS})
add_definitions(${PCL_DEFINITIONS})
add_executable (xyz2pcd pcdwrite.cpp)
target_link_libraries (xyz2pcd ${PCL_LIBRARIES})