首页 > 其他分享 >kitti彩色地图拼接<一>、点云bin格式转为pcd格式

kitti彩色地图拼接<一>、点云bin格式转为pcd格式

时间:2023-09-30 09:45:22浏览次数:32  
标签:bin files bin2pcd 点云 格式 include pcd

 

 下面是bin格式转pcd格式批量处理代码,其中品红色是需要改成你的实际情况的地方。

cpp:【note:代码中,pcd文件的路径改为你自己的】

 1 #include <boost/program_options.hpp>
 2 #include <pcl/point_types.h>
 3 #include <pcl/io/pcd_io.h>
 4 #include <pcl/common/point_operators.h>
 5 #include <pcl/common/io.h>
 6 #include <pcl/search/organized.h>
 7 #include <pcl/search/octree.h>
 8 #include <iostream>
 9 #include <string>
10 #include <vector>
11 #include <string.h>
12 #include <dirent.h>
13 using namespace pcl;
14 using namespace std;
15 
16 
17 /** @brief 获取path路径下所有指定格式文件名
18  *  @in    path:      eg:"/home/ros_proj/bin2pcd/input/"
19  *  @in    extendStr: eg:".bin"格式
20  *  @out   files:     “0000000000.bin” “0000000001.bin” “0000000002.bin”...
21  *  note:(具体哪种格式,需要在函数中修改,我这里默认.bin格式)
22  * */
23 int getFiles(const string path, vector<string>& files, const string& extendStr){
24 
25     int iFileCnt = 0;
26     DIR *dirptr = NULL;
27     struct dirent *dirp;
28 
29     if((dirptr = opendir(path.c_str())) == NULL)//打开一个目录
30     {
31         std::cout << "errors occurs in open the input file!" <<std::endl;
32         return 0;
33     }
34     while ((dirp = readdir(dirptr)) != NULL)
35     {
36         if ((dirp->d_type == DT_REG) && 0 ==(strcmp(strchr(dirp->d_name, '.'), extendStr.c_str())))//判断是否为文件以及文件后缀名
37         {
38             files.push_back(dirp->d_name);
39         }
40         iFileCnt++;
41     }
42     closedir(dirptr);
43 
44     return iFileCnt;
45 }
46 
47 int main(int argc, char **argv)
48 {
49     // bin输出文件夹
50     string pathIn = "/home/ros_proj/bin2pcd/input/"; // 记得修改getFiles()函数中文件格式,千万别写错,写错就JJ
51     // pcd输出文件夹
52     string pathOut = "/home/ros_proj/bin2pcd/output/";
53     string pcdStr = ".pcd";
54     vector<string> files;
55     // <一>、获取文件路径
56     getFiles(pathIn,files, ".bin");
57 //    int i = 0;
58 //    for(const auto &x: files)
59 //    {
60 //        cout << x << endl;
61 //        i++;
62 //        cout << i <<endl;
63 //    }
64     // <二>、遍历每一个bin文件
65     for (int i = 0; i < files.size(); ++i)
66     {
67         // 加载bin格式点云
68         fstream input(pathIn + files[i].c_str(), ios::in | ios::binary);
69         cout << "***********************************************" << endl;
70         cout << "processing " << (i + 1) << "st" << " bin file" <<endl;
71         cout <<"read the bin file: " << pathIn + files[i].c_str() << endl;
72         if(!input.good()){
73             cerr << "Could not read file: " << files[i] << endl;
74             exit(EXIT_FAILURE);
75         }
76         input.seekg(0, ios::beg);
77         // bin -> pcd
78         pcl::PointCloud<PointXYZI>::Ptr points (new pcl::PointCloud<PointXYZI>);
79         int j;
80         for (j=0; input.good() && !input.eof(); j++) {
81             PointXYZI point;
82             input.read((char *) &point.x, 3*sizeof(float));
83             input.read((char *) &point.intensity, sizeof(float));
84             points->push_back(point);
85         }
86         //pcd点云写入硬盘
87         string pcd = ".pcd";
88         string tmp = files[i].substr(0, 10);
89         pcl::io::savePCDFileBinary(pathOut + tmp + pcd, *points);
90         cout <<"write the pcd file: " << pathOut + tmp + pcd<< endl;
91         cout << "***********************************************" << endl;
92     }
93     return 1;
94 }

 

 

Cmakelists:

cmake_minimum_required(VERSION 2.6)
project(bin2pcd)
 
find_package(PCL 1.2 REQUIRED)
 
# 加入Boost setting
find_package(Boost COMPONENTS program_options REQUIRED )
include_directories(${Boost_INCLUDE_DIRS})
link_directories(${Boost_LIBRARY_DIRS})
 
include_directories(${PCL_INCLUDE_DIRS})
link_directories(${PCL_LIBRARY_DIRS})
add_definitions(${PCL_DEFINITIONS})
 
add_executable(bin2pcd bin2pcd.cpp)
 
target_link_libraries (bin2pcd ${PCL_LIBRARIES} ${Boost_LIBRARIES}) #此处也有修改
 
install(TARGETS bin2pcd RUNTIME DESTINATION bin)

  下面左边是bin格式,右边是pcd格式。

 

标签:bin,files,bin2pcd,点云,格式,include,pcd
From: https://www.cnblogs.com/feiyull/p/15344097.html

相关文章

  • 解析pcap格式点云数据包
    1、多BB一句,不想写代码,就去速腾的驱动中复制粘贴。2、问别人的时候,应该问有没有128线速腾雷达数据帧格式资料(每个字段的意义),工具对应读取数据那一块源码能否给出来。 激光雷达每一帧的数据长度固定为1248字节,前42字节的前数据包标识、12组数据包、4字节时间戳和最后两字节雷达......
  • Go每日一库之141:go-bindata(嵌入静态文件)
    使用Go开发应用的时候,有时会遇到需要读取静态资源的情况。比如开发Web应用,程序需要加载模板文件生成输出的HTML。在程序部署的时候,除了发布应用可执行文件外,还需要发布依赖的静态资源文件。这给发布过程添加了一些麻烦。既然发布单独一个可执行文件是非常简单的操作,就有人会......
  • ​​pandas.get_dummies()​​ 是一个用于执行独热编码(One-Hot Encoding)的 pandas 函
    pandas.get_dummies()是一个用于执行独热编码(One-HotEncoding)的pandas函数。它用于将分类(或离散)特征转换为模型可以处理的二进制格式,以便更好地在机器学习算法中使用。独热编码将每个不同的类别值转换为一个新的二进制特征列,其中每个列代表一个类别,并且只有一个值为1,其余为0......
  • 创建一个二叉排序树(Binary Search Tree)
    一、二叉排序树的定义左子树所有结点的值均小于根结点的值右子树所有结点的值均大于根节点的值左子树和右子树也是二叉排序树1.二叉排序树的结点结构typedefstructBSTNode{ /*二叉排序树的结点结构*/ intvalue; structBSTNode*left; structBSTNode*right;}BS......
  • pybind11
    fatalerror:Python.h:nosuchfileordirectory在使用pybind11时,如果不做调整可能就会出现这样的情况,Python.h一般出现在usr/include/pythonx.x文件夹中,而include路径默认情况下只会包含usr/include,所以我们只需要添加include路径即可。ctrl+shift+p打开C/C++editconfigu......
  • fepk文件格式说明
     1 卫星影像金字塔分块原理说明 通常我们在工作中使用的卫星影像数据,轻则几百M,重则几百个G甚至上TB级。影像数据太大,是大家经常会遇到的一个问题,尤其是想下载一个省以上数据的时候该问题尤为突出。那么该问题是否有一个比较好的解决方案呢?以全球为例,我们以19级为例,共有2......
  • 三维模型3DTile格式轻量化压缩处理重难点分析
    三维模型3DTile格式轻量化压缩处理重难点分析 在对三维模型3DTile格式进行轻量化压缩处理的过程中,存在一些重要而又困难的问题需要解决。以下是几个主要的重难点:1、压缩率和模型质量之间的平衡:压缩技术的目标是尽可能地减少数据大小,但过度的压缩会降低模型的精度,影响最终的视......
  • pageofficeV6.0另存文件为HTML格式
    转载:另存文件为HTML格式另存文件为HTML格式注意本文中展示的代码均为关键代码,复制粘贴到您的项目中,按照实际的情况,例如文档路径,用户名等做适当修改即可使用。在实际项目开发中,有时需要满足一些没有安装Office软件的客户端电脑或者手机端浏览文档的需求。为了实现这个功能,我们......
  • The 2021 China Collegiate Programming Contest (Harbin) JBEIDG
    The2021ChinaCollegiateProgrammingContest(Harbin)目录The2021ChinaCollegiateProgrammingContest(Harbin)VP概况J-LocalMinimumB-MagicalSubsequenceE-PowerandModuloI-PowerandZeroD-MathmasterG-DamagedBicycleVP概况队友不应该写签到,签到......
  • VScode对于json格式文件允许添加注释设置(永久有 效)
    如果你想让VSCode永久地将所有的.json文件都识别为JSONC,你可以通过修改VSCode的全局设置来实现。以下是具体步骤:在VSCode中按下Ctrl+,来打开设置(或者在菜单中选择"File"->"Preferences"->"Settings")。在搜索框中输入“files.associations”。在"Files:Associations......