PCL 批量处理点云文件

系列文章目录



前言

点云处理时往往会需要对多个点云进行处理,比如在预处理,保存点云时。下面提供一个简单的点云批量转换例子,PCD文件从Binary编码转ASCII编码,供大家参考。


一、PCL是什么?

点云库 (PCL) 是一个独立的、大规模的、开放的 2D/3D 图像和点云处理项目。PCL 是根据BSD 许可条款发布的,因此可免费用于商业和研究用途。
在这里插入图片描述

二、配置PCL环境

一键配置PCL环境+VTK环境(最简单的方法)

三、使用步骤

1.引入库

代码如下(示例):

#include <iostream>
#include <pcl/io/pcd_io.h>
#include <pcl/point_types.h>
#include <boost/filesystem.hpp>

namespace fs = boost::filesystem;


2.主函数

代码如下(示例):

int main(int argc, char** argv)
{
    // 定义输入和输出文件夹路径
    fs::path input_folder("D:\\VS2019Projects\\Customers\\20240711_bin2ascii\\dataset\\");
    fs::path output_folder("D:\\VS2019Projects\\Customers\\20240711_bin2ascii\\output\\");

    // 如果输出文件夹不存在,则创建
    if (!fs::exists(output_folder)) {
        fs::create_directory(output_folder);
    }

    // 遍历输入文件夹中的所有PCD文件
    for (auto& entry : fs::directory_iterator(input_folder))
    {
        if (fs::is_regular_file(entry) && entry.path().extension() == ".pcd")
        {
            // 读取点云文件
            pcl::PointCloud<pcl::PointXYZI>::Ptr cloud(new pcl::PointCloud<pcl::PointXYZI>);
            if (pcl::io::loadPCDFile<pcl::PointXYZI>(entry.path().string(), *cloud) == -1)
            {
                std::cerr << "Failed to load PCD file " << entry.path().string() << std::endl;
                continue;
            }

            // 生成输出文件名
            fs::path output_file = output_folder / (entry.path().stem().string() + "_ASCII.pcd");

            // 保存点云文件为ASCII格式
            if (pcl::io::savePCDFileASCII(output_file.string(), *cloud) == -1)
            {
                std::cerr << "Failed to save PCD file " << output_file.string() << std::endl;
                continue;
            }

            std::cout << "Converted " << entry.path().filename().string() << " to ASCII format." << std::endl;
        }
    }

    return 0;
}

总结

基于PCL对点云文件的批量操作示例~

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值