点云pcd文件投影到平面bev视角

9 篇文章 1 订阅
8 篇文章 0 订阅

点云pcd文件投影到平面生成bev视角,并批量保在这里插入代码片存。

#include <iostream>
#include <pcl/io/pcd_io.h>
#include <pcl/point_types.h>
#include <pcl/ModelCoefficients.h>
#include <pcl/filters/project_inliers.h>
#include <boost/filesystem.hpp>
#include <string>


int main() {
    std::string input_dir = "bev/200";
    std::string output_dir = "bev/200_bev";

    // Create a set of planar coefficients with X=Y=0,Z=1
    pcl::ModelCoefficients::Ptr coefficients (new pcl::ModelCoefficients ());
    coefficients->values.resize (4);
    coefficients->values[0] = 0;
    coefficients->values[1] = 0;
    coefficients->values[2] = 1.0;
    coefficients->values[3] = 0;

    // brows the input_dir and do the same to every fpcd file
    for (auto& file : boost::filesystem::directory_iterator(input_dir)) {
        pcl::PointCloud<pcl::PointXYZI>::Ptr cloud (new pcl::PointCloud<pcl::PointXYZI>);
        pcl::PointCloud<pcl::PointXYZI>::Ptr cloud_bev (new pcl::PointCloud<pcl::PointXYZI>);

        if (file.path().extension() != ".pcd")continue;

        std::string input_file_path = file.path().string();
        std::string output_file_path = output_dir + "/" + file.path().stem().string() + "_projected.pcd";

        // Fill in the cloud data
        pcl::PCDReader reader;
        reader.read(input_file_path, *cloud);
        std::cout << "PointCloud before filtering has: " << cloud->points.size() << " data points." << std::endl;

        // Create the filtering object
        pcl::ProjectInliers<pcl::PointXYZI> proj;
        proj.setModelType (pcl::SACMODEL_PLANE); // 三维平面参数
        proj.setInputCloud (cloud);
        proj.setModelCoefficients (coefficients);
        proj.filter (*cloud_bev);

        std::cerr << "Cloud after projection: " << cloud_bev->points.size() << " data points." << std::endl;
        pcl::io::savePCDFileBinaryCompressed(output_file_path, *cloud_bev);

    }
    return 0;
}

对应的CMakeLists.txt文件

cmake_minimum_required(VERSION 2.8)

project(bev)

find_package(PCL 1.3 )

include_directories(${PCL_INCLUDE_DIRS})

link_directories(${PCL_LIBRARY_DIRS})

add_definitions(${PCL_DEFINITIONS})

add_executable(${PROJECT_NAME} bev.cpp)

target_link_libraries(${PROJECT_NAME} ${PCL_LIBRARIES})
激光点云(PointCloud)PCD文件是一种常见的点云数据存储格式,通常用于激光扫描设备生成的三维点云数据。如果您想下载激光点云PCD文件,可以按照以下步骤进行。 首先,确定您要下载的激光点云PCD文件的来源。激光点云PCD文件可以从各种资源获取,例如网上开放的点云数据集、学术论文附带的数据集或特定软件生成的数据。确保您获得可信来源的PCD文件。 其次,确定您计算机上是否已安装点云数据处理软件,例如PCL(Point Cloud Library)、Matlab、ROS(Robot Operating System)等。这些软件提供了对PCD文件的读取和处理功能。 然后,打开您选择的点云数据处理软件,并导航到文件下载所在的目录或指定路径。如果您从网上下载PCD文件,可以选择将其保存到计算机的特定目录中。 接下来,在点云数据处理软件中,打开文件菜单或使用相应的命令将PCD文件导入到软件中。根据软件的不同,导入PCD文件的方式可能会有所不同。 最后,等待软件完成PCD文件的导入过程。一旦文件成功导入,您就可以在点云数据处理软件中对其执行各种操作,例如可视化、滤波、分割、配准等。 需要注意的是,PCD文件下载和处理可能需要较长的时间,具体取决于您计算机的性能和文件的大小。此外,确保您已获得合法的PCD文件并遵守任何涉及数据使用的相关法律和条例。 总结起来,下载激光点云PCD文件需要从可靠的来源获取文件,并使用相应的点云数据处理软件将其导入到计算机中进行进一步的处理和分析。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值