Introduction à PCL (2) : Première introduction aux données de nuages de points

1. Données de nuages ​​de points

Dans pcl, de nombreux types de données de nuages ​​de points sont définis, tels que PointXYZ, PointXYZI, PointXYZRGBA, etc., chacun d'entre eux pouvant être considéré comme les données d'un point dans le nuage de points. Le type de données de l'ensemble du nuage de points est défini comme PointCloud.

Par pcl::PointCloud<pcl::PointXYZ> = cloudexemple, cloud est un objet nuage de points, qui contient de nombreuses données de nuages ​​de points, et le type de données est pcl::PointXYZ. Pour plus de détails, reportez-vous au blog « [Point Cloud Processing Technology PCL] Basic Data Types in PCL-PointCloud and PointT » et à l'introduction du nuage de points du site officiel .

2. Opération simple sur les données de nuages ​​de points

En vous référant au code de Shuangyu , utilisez la fonction rand pour générer plusieurs données de nuage de points au format PointXYZ et enregistrez le nuage de points contenant ces données en tant que fichier de données de nuage de points au format .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. Résultats

Insérer la description de l'image ici

Je suppose que tu aimes

Origine blog.csdn.net/qq_30841655/article/details/132698323
conseillé
Classement