pcd_to_txt (x,y,z)

环境:ubuntu20.04+pcl1.9.0 其他版本ubuntu都可,首先确定你已安装了pcl和cmake

1、新建文件夹,创建cpp文件和cmakelists文件

alt+ctrl+t                     //新开终端
mkdir pcdtotxt
cd pcdtotxt
touch pcdtotxt.cpp
touch CMakeLists.txt

2、在pcdtotxt.cpp粘贴如下内容

#include <iostream>
#include <pcl/io/pcd_io.h>  
#include <pcl/point_types.h>  
#include <pcl/filters/voxel_grid.h>
using namespace std;

void pclDownsize(pcl::PointCloud<pcl::PointXYZ>::Ptr in, pcl::PointCloud<pcl::PointXYZ>::Ptr out)
{
    pcl::VoxelGrid<pcl::PointXYZ> down_filter;
    float leaf = 0.1;
    down_filter.setLeafSize(leaf, leaf, leaf);
    down_filter.setInputCloud(in);
    down_filter.filter(*out);
}

int main(int argc, char *argv[])
{
    pcl::PointCloud<pcl::PointXYZ>::Ptr cloud(new pcl::PointCloud<pcl::PointXYZ>);
    
    if (pcl::io::loadPCDFile<pcl::PointXYZ>("/home/lds/pcdtotxt/trajectory.pcd", *cloud) == -1)
    {
        PCL_ERROR("Couldn't read file chuli.pcd\n");
        return (-1);
    }
    
    cout << "points cloud is successfully loaded! " << endl;
    int Num = cloud->points.size();
    double *X = new double[Num] {0};
    double *Y = new double[Num] {0};
    double *Z = new double[Num] {0};
    cout << "size is : " << cloud->points.size() << endl;
    for (size_t i = 0; i <  cloud->points.size(); ++i)
    {
        X[i] = cloud->points[i].x;
        Y[i] = cloud->points[i].y;
        Z[i] = cloud->points[i].z ; 
        cout << "first  " << i << " of " << Num << endl;
    }
 
    ofstream zos("trajectory.txt");
    for (int i = 0; i< cloud->points.size(); i++)
    {
        zos << X[i] << " " << Y[i] << " " << Z[i] << endl;
        cout << "second  " << i << " of " << Num << endl;
    }
    cout << "transition has done!" << endl;
   
    return 0;
}

修改/home/lds/pcdtotxt/trajectory.pcd,将pcd拖进pcdtotxt文件夹打开终端输入pwd查看你的路径

3、在CMakeLists.txt粘贴如下内容

cmake_minimum_required(VERSION 2.8)

set(CMAKE_BUILD_TYPE "Release")

set(CMAKE_CXX_FLAGS "-std=c++14 -O2")

find_package(PCL REQUIRED)
include_directories(${PCL_INCLUDE_DIRS})
link_directories(${PCL_LIBRARY_DIRS})

add_executable (pcdtotxt pcdtotxt.cpp) 
target_link_libraries(pcd2txt ${PCL_LIBRARIES})

如果你是ubuntu16.04需要将第三行c++14改为c++11 (ubuntu16.04默认使用c++11编译)

4、在pcdtotxt文件夹下打开终端编译cpp文件

cmake .
make
./pcdtotxt                   //执行cpp文件
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值