MATLAB mat文件转TXT文件

因为本菜鸟之前一直使用MATLAB做点云处理,所以数据都是mat文件,为了使用PCL库,需要先转化为TXT文件,在使用C++PCL将TXT文件转化为PCD文件。。。。。下面是MATLAB代码,不需要的同学请自动忽略。

fid=fopen('pipline.txt','wt');
fprintf(fid,'%12.8f %12.8f %12.8f\n',pipline);%读取是按列进行读取
fclose(fid);

注意:第二行代码中的“pipline”就是待转化的mat文件,是一个3*n的矩阵,n表示点云的个数,一定要是3* n的形式,因为fprintf函数是按列读取。

C++ TXT转PCD文件

进入正题,直接上代码:

#include <iostream>
#include<fstream>
#include<vector>
#include<string>
#include <pcl/io/pcd_io.h>
#include <pcl/point_types.h>
using namespace std;
int main(int argc, char** argv)
{//定义一种类型表示TXT中xyztypedef struct TXT_Point_XYZ{double x;double y;double z;}TOPOINT_XYZ;//读取txt文件int num_txt;FILE *fp_txt;TXT_Point_XYZ txt_points;vector<TXT_Point_XYZ> my_TxtPoints;fp_txt = fopen("pipline.txt", "r");if (fp_txt){while (fscanf(fp_txt, "%lf %lf %lf", &txt_points.x, &txt_points.y, &txt_points.z) != EOF){//将点存入容器尾部my_TxtPoints.push_back(txt_points);}}elsecout << "读取txt文件失败" << endl;num_txt = my_TxtPoints.size();//写入点云数据pcl::PointCloud<pcl::PointXYZ> ::Ptr cloud(new pcl::PointCloud<pcl::PointXYZ>);cloud->width = num_txt;cloud->height = 1;cloud->is_dense = false;cloud->points.resize(cloud->width*cloud->height);for (int i = 0; i < cloud->points.size(); ++i){cloud->points[i].x = my_TxtPoints[i].x;cloud->points[i].y = my_TxtPoints[i].y;cloud->points[i].z = my_TxtPoints[i].z;}pcl::io::savePCDFileASCII("test_pcd.pcd", *cloud);cout << "从 txt_pcd.txt读取" << cloud->points.size() << "点写入txt_pcd.pcd" << endl;//打印出写入的点cout << "_________________________________" << endl;for (size_t i = 0; i < cloud->points.size(); ++i)cout << "    " << cloud->points[i].x<< " " << cloud->points[i].y<< " " << cloud->points[i].z << endl;system("pause");return (0);
}

注释:

           fscanf 位于头文件中, 其功能为根据数据格式(format)从输入流中读入数据;与fgets的差别在于:fscanf遇到空格和换行时结束,那么它的读取过程是怎样的呢?举个例子:

例如:int a,b,c;
数据文件fid中的数据是:
89 99 70<CR>
78 99 69<CR>
用fscanf(fid,"%d%d%d",&a,&b,&c);读取时,98赋给a,99赋给b,70赋给c,最后的<CR>会保留在文件中,当下一个scanf()函数再行读入时,首先碰到<CR>,这个<CR>会被读出并丢弃,即使有多个白字符也同样被丢弃,直到读到有效数据。

EOF 是 end of file , 通常用于 读文件时,读到文件尾。文件尾有此符号。

resize(cloud->width*cloud->height);表示调整容器cloud的大小。

from:https://blog.csdn.net/qq_42570058/article/details/82989794

PCL点云学习(1)——pcd文件的生成和读取相关推荐

  1. PCL点云CSV转PCD文件

    点云文件转换代码 注意:CSV文件格式也不同,本文所述的CSV文件时用基恩士线激光传感器得到的. 具体格式为,这样式的 表格中行表示X轴向的点,列表示Y,而表格中的数值表示Z轴深度. X与Y的间距是由 ...

  2. ROS kinetic环境使用Realsense D435i获取三维点云并存为.pcd文件

    ROS kinetic环境使用Realsense D435i获取三维点云并存为.pcd文件 二进制安装D435的SDK 下载intel Realsense ROS工作空间 ROS下驱动D435i获得点 ...

  3. PCL点云学习 十二(RoPs 特征与惯性矩描述子)

    RoPs(Rotational Projection Statistics) pcl官网地址 来自: <pcl_点云从入门到精通>:详见这里 旋装投影特征 旋装平移不变性 抗干扰性良好 关 ...

  4. matlab如何新建mat文件_matlab中mat文件的生成和读取

    1.mat文件的生成 (1)直接在Matlab中创建并保存矩阵数据 打开Matlab软件,点击左上角文件(File),然后点击新建(new),选择变量(Variable),就新建了一个mat文件. 点 ...

  5. matlab中mat文件的生成和读取

    在命令窗口输入数据. 1.mat文件的生成 (1)保存单一矩阵数据 如图所示,输入数据,生成数组.最后输入save x1 x.该语句表示将敲入的数组x生成数据x1.mat文件. (2)如果矩阵A.B都 ...

  6. matlab.mat文件读取,matlab中mat文件的生成和读取

    1.mat文件的生成 (1)直接在Matlab中创建并保存矩阵数据 打开Matlab软件,点击左上角文件(File),然后点击新建(new),选择变量(Variable),就新建了一个mat文件. 点 ...

  7. android中xml文件的生成与读取(Pull)

    1.android中是采用Xml文件序列化器生成Xml文件的, //1得到一个xml文件的序列化器(生成器) XmlSerializer serializer=Xml.newSerializer(); ...

  8. XML文件的生成与读取

    从数据库生成: public static void ToXML(string tablename){//获取数据string sql = "select * from " + t ...

  9. 从PCD文件写入和读取点云数据

    (1)学习向PCD文件写入点云数据 建立工程文件ch2,然后新建write_pcd.cpp  CMakeLists.txt两个文件 write_pcd.cpp : #include <iostr ...

最新文章

  1. 【力扣网练习题】两数之和
  2. bash脚本之for语句if语句以及各种测试语句(2)
  3. jemter编写Mysql脚本___传参
  4. 高级计算机网络知识点复习
  5. [HTTP]Etag的工作流程
  6. 71.数据模型有哪几种?特征?
  7. 搞笑向, 面向IE8的webworker-ployfill
  8. SAP Spartacus 启动时 Chrome 里观察到的 product.js
  9. 首汽约车上线行程录音功能 产生司乘纠纷时可用于调查取证
  10. linux jsp连接mysql_Linux JSP连接MySQL数据库
  11. QT每日一练day20:事件处理机制
  12. pytorch图像预处理
  13. UVALive6050 Primes【素数筛选+前缀和】
  14. windows 7 精彩新功能
  15. Java入门——第九天
  16. 菜鸟学Linux 第048篇笔记 配置slave server
  17. 香山芯片调试目标完成,直播完毕
  18. 在使用git bash输入命令时,已输入命令按Backspace键无法删除
  19. [跑步] 跑步者的力量训练
  20. String去除后面指定字符串

热门文章

  1. Kali Linux 从入门到精通(三)-入侵系统定制
  2. 图书馆管理系统——还书和延期操作
  3. Leetcode 杂题
  4. ASP.NET 本地化 (localization)
  5. AWS服务器上安全组端口设置和访问的问题
  6. python学习总结----内置函数及数据持久化
  7. solr 高亮springdatasolr
  8. 再谈布局,栅栏式自适应布局的学习和实现(calc自适应布局)
  9. 程序员进阶之算法练习(一)
  10. Linux命令之查找