1. Dados de nuvem de pontos
Em pcl, muitos tipos de dados de nuvem de pontos são definidos, como PointXYZ, PointXYZI, PointXYZRGBA, etc., cada um dos quais pode ser considerado como dados de um ponto na nuvem de pontos. O tipo de dados de toda a nuvem de pontos é definido como PointCloud.
Tomemos pcl::PointCloud<pcl::PointXYZ> = cloud
por exemplo, nuvem é um objeto de nuvem de pontos, que contém muitos dados de nuvem de pontos, e o tipo de dados é pcl::PointXYZ. Para obter detalhes, consulte o blog "[Tecnologia de processamento de nuvem de pontos: PCL] Tipos de dados básicos em PCL - PointCloud e PointT" e o site oficial introdução à nuvem de pontos .
2. Operações simples em dados de nuvem de pontos
Referindo-se ao código de Shuangyu , use a função rand para gerar vários dados de nuvem de pontos no formato PointXYZ e salve a nuvem de pontos contendo esses dados como arquivos de dados de nuvem de pontos no formato .pcd.
- pcl01.cpp
#include <iostream>
#include <pcl/io/pcd_io.h>
#include <pcl/point_types.h>
int main()
{
//第一部分:定义点云对象,其中的数据类型为PointXYZ
pcl::PointCloud<pcl::PointXYZ> cloud;
//第二部分:对点云对象cloud赋值,包括width、height、is_dense等参数赋值,给出点云中数据的定量描述
//然后对points进行resize,对具体的数据vector初始化其中包含width*height个
cloud.width = 5;
cloud.height = 1;
cloud.is_dense = false;
cloud.points.resize(cloud.width * cloud.height);
//第三部分:对cloud的points vector进行赋值
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);
}
//第四部分:对cloud的points vector进行逐个point的输出,并将cloud保存为.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;
}
- CMakeLists.txt
cmake_minimum_required(VERSION 2.8 FATAL_ERROR)
project(pcd01)
find_package(PCL)
add_executable(pcl01 pcl01.cpp) # 将cpp文件编译生成可执行文件
target_link_libraries(pcl01 ${PCL_LIBRARIES}) # cpp文件中仅提供了pcl的.h头文件,具体实现需要库文件,这里将库文件链接到可执行文件中