PCL 소개(2): 포인트 클라우드 데이터에 대한 첫 소개

1. 포인트 클라우드 데이터

pcl에는 PointXYZ, PointXYZI, PointXYZRGBA 등과 같은 많은 포인트 클라우드 데이터 유형이 정의되어 있으며 각각은 포인트 클라우드의 한 점 데이터로 간주될 수 있습니다. 전체 포인트 클라우드의 데이터 유형을 PointCloud로 정의합니다.

예를 들어 pcl::PointCloud<pcl::PointXYZ> = cloudcloud는 많은 포인트 클라우드 데이터를 포함하는 포인트 클라우드 객체이고 데이터 유형은 pcl::PointXYZ입니다. 자세한 내용은 블로그 "[포인트 클라우드 처리 기술: PCL] PCL의 기본 데이터 유형 - PointCloud 및 PointT"공식 홈페이지 포인트 클라우드 소개를 참조하세요 .

2. 포인트 클라우드 데이터에 대한 간단한 조작

Shuangyu의 코드를 참조하여 rand 함수를 사용하여 PointXYZ 형식의 여러 포인트 클라우드 데이터를 생성하고 이러한 데이터가 포함된 포인트 클라우드를 .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. 결과

여기에 이미지 설명을 삽입하세요.

추천

출처blog.csdn.net/qq_30841655/article/details/132698323