PCL读取点云数据找不到文件 Could not find file ‘P毨$?‘

求助
我装的PCL-1.13.1+vs2022,环境变量也都配置成功了
可以运行代码

// 创建点云对象
    pcl::PointCloud<pcl::PointXYZ>::Ptr cloud(new pcl::PointCloud<pcl::PointXYZ>);

    // 定义正方体的尺寸
    float length = 1.0f;

    // 添加正方体顶点数据
    for (float x = -length / 2; x <= length / 2; x += 0.1f)
    {
        for (float y = -length / 2; y <= length / 2; y += 0.1f)
        {
            for (float z = -length / 2; z <= length / 2; z += 0.1f)
            {
                pcl::PointXYZ point;
                point.x = x;
                point.y = y;
                point.z = z;
                cloud->push_back(point);
            }
        }
    }

    // 设置点云属性
    cloud->width = cloud->size();
    cloud->height = 1;
    cloud->is_dense = true;

    // 保存点云为PCD文件
    pcl::io::savePCDFileASCII("cube.pcd", *cloud);
    std::cout << "Saved " << cloud->size() << " data points to cube.pcd." << std::endl;

    return 0;

并且保存生成了一个名为cube.pcd的点云文件,但是我在利用

pcl::io::loadPCDFile<pcl::PointXYZ>(file_path, *cloud)

读取这个生成的pcd文件时一直报错,报错信息如下:

[pcl::PCDReader::read] Could not find file 'P毨$?'.

而且出现的还是乱码,我的文件路径不含中文和特殊字符

file_path = "D:\\pcd_files\\cube.pcd"

我的电脑系统windows11(也不知道跟这个有关系没)

我读取pcd的代码如下:

	string file_path;
    cout << "Enter the absolute path of PCD file: ";
    getline(cin, file_path);
    pcl::PointCloud<pcl::PointXYZ>::Ptr cloud(new pcl::PointCloud<pcl::PointXYZ>);

    // 读取PCD文件
    if (pcl::io::loadPCDFile<pcl::PointXYZ>(R"(file_path)", *cloud) == -1)
    {
        PCL_ERROR("Failed to read PCD file\n");
        while (true) {
            std::string out;
            std::cin >> out;
            if (out == "00") {
                break;
            }
        }
        return -1;
    }

    // 输出点云信息
    std::cout << "Loaded " << cloud->size() << " data points from cube.pcd" << std::endl;
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 9
    评论
pcl::PointCloud和pcl::PCLPointCloud2是点云PCL中两种不同的数据格式。 pcl::PointCloud是一种模板化的数据结构,用于表示包含XYZ坐标的点云数据。其中,pcl::PointXYZ是一个简单的结构体,表示一个点的XYZ坐标。而pcl::PointCloud<pcl::PointXYZ>则是一个点云,包含多个pcl::PointXYZ类型的点。 引用中给出了转化点云格式的示例代码。cloud_filtered_blob是一个pcl::PCLPointCloud2::Ptr类型的指针,用于存储PCLPointCloud2格式的点云数据。cloud_filtered是一个pcl::PointCloud<pcl::PointXYZ>::Ptr类型的指针,用于存储PointCloud<pcl::PointXYZ>格式的点云数据pcl::PCLPointCloud2是另一种数据格式,它是一种通用的点云数据结构,可以存储多种类型的点云数据。它是一个类模板,可以根据不同的点云数据类型进行实例化。PCLPointCloud2包含一些固定的字段,如点的坐标、颜色和法向量等,同时也可以包含自定义的字段。 引用给出了一些将pcl::PCLPointCloud2格式的点云转化为pcl::PointCloud格式的函数示例代码。这些函数可以根据不同的转化需求,选择不同的方法进行转化。 在编写程序时,我们经常遇到定义点云数据格式的情况。其中,typedef pcl::PointXYZRGB PointT;定义了一个命名为PointT的数据类型,表示一个具有XYZ坐标和RGB颜色信息的点。typedef pcl::PointCloud<PointT> PointCloudT;定义了一个命名为PointCloudT的数据类型,表示一组具有PointT类型的点云数据。 引用给出了一个例子,展示了如何使用typedef定义点云数据格式。 总结来说,pcl::PointCloud表示一个XYZ坐标的点云数据,而pcl::PCLPointCloud2是一种通用的点云数据结构,可以存储多种类型的点云数据。在编写程序时,我们可以使用不同的转化函数将这两种数据格式进行转化。同时,通过使用typedef可以方便地定义自定义的点云数据格式。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* *3* [PCL学习记录-Extra-1 pcl::PCLPointCloud2::Ptr和pcl::PointCloud<pcl::PointXYZ> 点云格式区别及相互...](https://blog.csdn.net/weixin_42503785/article/details/110362740)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 100%"] [ .reference_list ]
评论 9
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值