Introdução ao PCL (2): Primeira introdução aos dados de nuvem de pontos

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> = cloudpor 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头文件,具体实现需要库文件,这里将库文件链接到可执行文件中

3. Resultados

Insira a descrição da imagem aqui

Acho que você gosta

Origin blog.csdn.net/qq_30841655/article/details/132698323
Recomendado
Clasificación