点云技术相关产学研社区

 找回密码
 立即注册加入PCL中国点云技术相关产学研社区

扫一扫,访问微社区

查看: 25379|回复: 9

las文件读取,转换成pcd

[复制链接]
发表于 2013-7-18 22:36:24 | 显示全部楼层 |阅读模式
写了一个las文件读取,转换pcd的小程序。程序只包含了必要的lib和dll文件。读者可自己配置。

程序下载地址:
http://pan.baidu.com/share/link? ... 1&uk=3926693025

主要代码如下:
  1. // las_pcl.cpp : 定义控制台应用程序的入口点。
  2. //

  3. #include "stdafx.h"
  4. #include <pcl/io/pcd_io.h>
  5. #include <pcl/point_types.h>
  6. #include <string>
  7. #include <vector>
  8. #include <fstream>
  9. #include <ios>
  10. #include <iostream>
  11. #include <laslib/lasreader.hpp>

  12. /*
  13. 将'/'格式的文件路径转换成 '\\';
  14. */
  15. static std::string convertFilePath(const std::string& file)
  16. {
  17.         int i = 0;
  18.         std::string s(file);
  19.         for(i = 0; i < s.size(); ++i)
  20.         {
  21.                 if(s[i] == '/')
  22.                         s[i] = '\\';
  23.         }
  24.         return s;
  25. }

  26. int _tmain(int argc, _TCHAR* argv[])
  27. {
  28.         const char* your_las_file_path = "XX.las";
  29.         const char* your_pcd_out_file_path = "XX.pcd";
  30.         //laslib只允许'\\'格式的文件路径。
  31.         std::string lasFile = convertFilePath(your_las_file_path);


  32.         //打开las文件
  33.         LASreadOpener lasreadopener;
  34.         lasreadopener.set_file_name(lasFile.c_str());
  35.         LASreader* lasreader = lasreadopener.open();
  36.         size_t count = lasreader->header.number_of_point_records;
  37.         pcl::PointCloud<pcl::PointXYZ>::Ptr pointCloudPtr(new pcl::PointCloud<pcl::PointXYZ>);
  38.         pointCloudPtr->resize(count);
  39.         pointCloudPtr->width = 1;
  40.         pointCloudPtr->height = count;
  41.         pointCloudPtr->is_dense = false;
  42.         size_t i = 0;
  43.         while(lasreader->read_point() && i < count)
  44.         {
  45.                 pointCloudPtr->points[i].x = lasreader->point.get_x();
  46.                 pointCloudPtr->points[i].y = lasreader->point.get_y();
  47.                 pointCloudPtr->points[i].z = lasreader->point.get_z();
  48.                 ++i;
  49.         }
  50.         pcl::io::savePCDFileASCII(your_pcd_out_file_path,*pointCloudPtr);
  51.         return 0;
  52. }
复制代码
回复

使用道具 举报

发表于 2013-7-19 10:54:36 | 显示全部楼层
感谢分享。

楼主有 pcd 转换为 las 的程序吗?
回复 支持 反对

使用道具 举报

 楼主| 发表于 2013-7-19 13:06:58 | 显示全部楼层
去看一下laslib或者liblas写las文件的代码吧。我没写,可以仿照我的程序,很容易写一个的。
回复 支持 反对

使用道具 举报

发表于 2013-7-19 14:44:43 | 显示全部楼层
本帖最后由 mypcl 于 2013-7-20 08:15 编辑

感谢软件工程师、pcl中国志愿者胡洋的分享。
这个问题其实大家很多人在讨论组里提过了,终于有个小工具可以用了。再次感谢胡洋的对大家的分享。
我这里没有用过las的数据,也就没测试过,分享的这个las转pcd的源码,和我们的志愿者王果博士分享的那个小工具区别在哪里?
大家测试了分享下,谢谢回馈。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2013-7-19 23:50:51 | 显示全部楼层
其实目的很简单,las数据包含的信息多一些,一方面可以方便程序员从las中直接读取想要的信息,一方面,可以不存储成pcd文件,直接读取las到pointcloud对象中,从而利用pcl去处理。代码没有几行,程序员可以方便的扩展。ps,pcd ascii文件着实读写起来很慢的。。。
回复 支持 反对

使用道具 举报

发表于 2013-8-2 09:17:43 | 显示全部楼层
哇,楼上好厉害啊~~~值得学习!!
回复 支持 反对

使用道具 举报

发表于 2013-11-8 16:14:52 | 显示全部楼层
:victory: 好嘛
回复 支持 反对

使用道具 举报

发表于 2016-10-18 15:54:24 | 显示全部楼层
2>las.obj : error LNK2019: 无法解析的外部符号 "public: __cdecl LASreadOpener::~LASreadOpener(void)" (??1LASreadOpener@@QEAA@XZ),该符号在函数 main 中被引用
2>las.obj : error LNK2019: 无法解析的外部符号 "public: class LASreader * __cdecl LASreadOpener::open(char const *,int)" (?open@LASreadOpener@@QEAAPEAVLASreader@@PEBDH@Z),该符号在函数 main 中被引用
2>las.obj : error LNK2019: 无法解析的外部符号 "public: void __cdecl LASreadOpener::set_file_name(char const *,int)" (?set_file_name@LASreadOpener@@QEAAXPEBDH@Z),该符号在函数 main 中被引用
2>las.obj : error LNK2019: 无法解析的外部符号 "public: __cdecl LASreadOpener::LASreadOpener(void)" (??0LASreadOpener@@QEAA@XZ),该符号在函数 main 中被引用
2>D:\PCLBOOK\las\Debug\las.exe : fatal error LNK1120: 4 个无法解析的外部命令
2>
2>生成失败。
回复 支持 反对

使用道具 举报

发表于 2017-10-9 15:05:44 | 显示全部楼层
云盘链接有问题啊~~~
显示如下
“啊哦!链接错误没找到文件,请打开正确的分享链接!”
回复 支持 反对

使用道具 举报

发表于 2017-12-7 21:22:00 | 显示全部楼层
链接不能用,看不到laslib/lasreader.hpp定义的代码
回复 支持 反对

使用道具 举报

本版积分规则

QQ|小黑屋|点云技术相关产学研社区 ( 陕ICP备13001629号 )

GMT+8, 2024-5-2 15:16 , Processed in 1.313242 second(s), 16 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表