读写PCD文件

1.源代码

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

// 读pcd文件
bool readPCDFile()
{
    pcl::PointCloud<pcl::PointXYZ>::Ptr cloud(new pcl::PointCloud<pcl::PointXYZ>); // 创建POintCloud<PointXYZ>boost共享指针并进行实例化
     // 打开点云文件
    if (pcl::io::loadPCDFile<pcl::PointXYZ>("txt2pcd_bunny1.pcd", *cloud) == -1) {
        return false;
    }
    // 打印点云数据
    for (const auto& point : *cloud) {
        std::cout << "    " << point.x
            << " " << point.y
            << " " << point.z << std::endl;
    }
    return true;
}

// 写pcd文件
bool writePCDFile()
{
    pcl::PointCloud<pcl::PointXYZ> cloud;

    // 创建点云
    cloud.width = 5;
    cloud.height = 1;
    cloud.is_dense = false;
    cloud.points.resize(cloud.width * cloud.height);

    for (size_t i = 0; i < cloud.points.size(); ++i)
    {
        cloud.points[i].x = 1024 * rand() / (RAND_MAX + 1.0f);
        cloud.points[i].y = 1024 * rand() / (RAND_MAX + 1.0f);
        cloud.points[i].z = 1024 * rand() / (RAND_MAX + 1.0f);
    }

    pcl::io::savePCDFileASCII("test_pcd.pcd", cloud); // 将点云数据存储在文件中
    // 打印点云数据
    for (const auto& point : cloud) {
        std::cerr << "    " << point.x << " " << point.y << " " << point.z << std::endl;
    }
    return true;
}

int main()
{
    readPCDFile();
    writePCDFile();

    return 0;
}
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容