这个教程我们学习怎样把点云数据写入PCD文件。
- #include <iostream>
- #include <pcl/io/pcd_io.h>
- #include <pcl/point_types.h>
- int
- main (int argc, char** argv)
- {
- pcl::PointCloud<pcl::PointXYZ> cloud;
- // Fill in the cloud data
- cloud.width = 5;
- cloud.height = 1;
- cloud.is_dense = false;
- cloud.points.resize (cloud.width * cloud.height);
- for (size_t i = 0; i < cloud.points.size (); ++i)
- {
- cloud.points[i].x = 1024 * rand () / (RAND_MAX + 1.0f);
- cloud.points[i].y = 1024 * rand () / (RAND_MAX + 1.0f);
- cloud.points[i].z = 1024 * rand () / (RAND_MAX + 1.0f);
- }
- pcl::io::savePCDFileASCII ("test_pcd.pcd", cloud);
- std::cerr << "Saved " << cloud.points.size () << " data points to test_pcd.pcd." << std::endl;
- for (size_t i = 0; i < cloud.points.size (); ++i)
- std::cerr << " " << cloud.points[i].x << " " << cloud.points[i].y << " " << cloud.points[i].z << std::endl;
- return (0);
- }
我们一步一步来分析上面的代码。
- #include <pcl/io/pcd_io.h>
- #include <pcl/point_types.h>
pcl/io/pcd_io.h 是包含了PCD文件IO操作定义的头文件,pcl/point_types.h 是包含了若干PointT数据结构定义的头文件。
- pcl::PointCloud<pcl::PointXYZ> cloud;
- // Fill in the cloud data
- cloud.width = 5;
- cloud.height = 1;
- cloud.is_dense = false;
- cloud.points.resize (cloud.width * cloud.height);
- for (size_t i = 0; i < cloud.points.size (); ++i)
- {
- cloud.points[i].x = 1024 * rand () / (RAND_MAX + 1.0f);
- cloud.points[i].y = 1024 * rand () / (RAND_MAX + 1.0f);
- cloud.points[i].z = 1024 * rand () / (RAND_MAX + 1.0f);
- }
用随机数填充点云数据结构,并设置参数width,height,is_dense。
- pcl::io::savePCDFileASCII ("test_pcd.pcd", cloud);
保存点云数据到test_pcd.pcd文件中。
- std::cerr << "Saved " << cloud.points.size () << " data points to test_pcd.pcd." << std::endl;
- for (size_t i = 0; i < cloud.points.size (); ++i)
- std::cerr << " " << cloud.points[i].x << " " << cloud.points[i].y << " " << cloud.points[i].z << std::endl;
- Saved 5 data points to test_pcd.pcd.
- 0.352222 -0.151883 -0.106395
- -0.397406 -0.473106 0.292602
- -0.731898 0.667105 0.441304
- -0.734766 0.854581 -0.0361733
- -0.4607 -0.277468 -0.916762
- $ cat test_pcd.pcd
- # .PCD v.5 - Point Cloud Data file format
- FIELDS x y z
- SIZE 4 4 4
- TYPE F F F
- WIDTH 5
- HEIGHT 1
- POINTS 5
- DATA ascii
- 0.35222 -0.15188 -0.1064
- -0.39741 -0.47311 0.2926
- -0.7319 0.6671 0.4413
- -0.73477 0.85458 -0.036173
- -0.4607 -0.27747 -0.91676
http://blog.csdn.net/leowangzi/article/details/7838138
生成的pcd文件在项目文件夹中的同名文件夹内,比如解决方案pcd.sln在D:\VSprogram\pcd路径下,生成的pcd文件在D:\VSprogram\pcd\pcd下。