创建点云文件、加载点云文件
来源:互联网 发布:电子病历书写软件 编辑:程序博客网 时间:2024/05/24 03:20
PCL(point cloud library)系列笔记:http://blog.csdn.net/chentravelling/article/category/2876349
//先上代码:
bool saveThePointCloud(){ pcl::PointCloud<pcl::PointXYZ> Cloud; //定义点云对象,类型PointXYZ // 创建点云Cloud.width=30;Cloud.height=1;Cloud.is_dense=false;Cloud.points.resize(Cloud.width*Cloud.height);srand(unsigned(int(NULL)));for(size_t i=0;i<Cloud.points.size();++i){//RAND_MAX = 32767if(i<10){Cloud.points[i].x = 1024*rand()/(RAND_MAX+1.0f);Cloud.points[i].y = 0.0f;Cloud.points[i].z = 0.0f;}else if(i<20){Cloud.points[i].x = 0.0f;Cloud.points[i].y = 1024*rand()/(RAND_MAX+1.0f);Cloud.points[i].z = 0.0f;}else{Cloud.points[i].x = 0.0f;Cloud.points[i].y = 0.0f;Cloud.points[i].z = 1024*rand()/(RAND_MAX+1.0f);}} // pcl::io::savePCDFile("pointCloudValueFile.pcd",Cloud); pcl::io::savePCDFileASCII("pointCloudFile.pcd",Cloud);//这两种save的结果貌似是一样的。 return true;}
然后在调用此函数即可。
完整程序:
#include <pcl/visualization/cloud_viewer.h>#include <iostream>#include <pcl/io/io.h>#include <pcl/io/pcd_io.h>//int user_data;//Initialize the viewer including the backgroundcolor,coordinate axis,and others.void viewerOneOff (pcl::visualization::PCLVisualizer& viewer){//set the backgroundcolor:R,G,B viewer.setBackgroundColor (1.0, 1.0, 1.0);//背景为白色 /* pcl::PointXYZ o; o.x = 0; o.y = 0; o.z = 0; viewer.addSphere (o, 5, "sphere",0);*///viewer.addLine(o,"line",0); /*std::cout << "i only run once" << std::endl;*/}//void viewerPsycho (pcl::visualization::PCLVisualizer& viewer)//{// static unsigned count = 0;// std::stringstream ss;// ss << "Once per viewer loop: " << count++;// viewer.removeShape ("text", 0);// viewer.addText (ss.str(), 200, 300, "text", 0);//// //FIXME: possible race condition here:// user_data++;//}//Accomplish loading a PCDFile,creating a viewer,and show the cloud at the viewer.void showTheCloud(){pcl::PointCloud<pcl::PointXYZRGBA>::Ptr cloud (new pcl::PointCloud<pcl::PointXYZRGBA>);//load pcl::io::loadPCDFile ("my_point_cloud.pcd", *cloud); pcl::visualization::CloudViewer viewer("Cloud Viewer"); //blocks until the cloud is actually rendered viewer.showCloud(cloud); //use the following functions to get access to the underlying more advanced/powerful //PCLVisualizer //This will only get called once viewer.runOnVisualizationThreadOnce (viewerOneOff); //This will get called once per visualization iteration //viewer.runOnVisualizationThread (viewerPsycho); while (!viewer.wasStopped ()) { //you can also do cool processing here //FIXME: Note that this is running in a separate thread from viewerPsycho //and you should guard against race conditions yourself... //user_data++; }}//Create a point-cloud object,and generate a PCD File to save the point cloud object.bool saveThePointCloud(){ pcl::PointCloud<pcl::PointXYZ> Cloud; //定义点云对象 // 创建点云Cloud.width=30;Cloud.height=1;Cloud.is_dense=false;Cloud.points.resize(Cloud.width*Cloud.height);srand(unsigned(int(NULL)));for(size_t i=0;i<Cloud.points.size();++i){//RAND_MAX = 32767if(i<10){Cloud.points[i].x = 1024*rand()/(RAND_MAX+1.0f);Cloud.points[i].y = 0.0f;Cloud.points[i].z = 0.0f;}else if(i<20){Cloud.points[i].x = 0.0f;Cloud.points[i].y = 1024*rand()/(RAND_MAX+1.0f);Cloud.points[i].z = 0.0f;}else{Cloud.points[i].x = 0.0f;Cloud.points[i].y = 0.0f;Cloud.points[i].z = 1024*rand()/(RAND_MAX+1.0f);}} pcl::io::savePCDFile("pointCloudValueFile.pcd",Cloud); pcl::io::savePCDFileASCII("pointCloudFile.pcd",Cloud); return true;}int main (){if(saveThePointCloud()){showTheCloud();}else{std::cout<<"Failed"<<endl;} return 0;}
这样,在工程目录下会多一个pointCloudFile.pcd文件。用记事本打开就可以看到数据。【PCD格式说明请阅读本人学习笔记】
至于命令窗口显示的Failed to find match for failed ‘rgba‘,是因为PCD文件一般的格式中是:
FIELDS x y z rgb
SIZE 4 4 4 4
TYPE F F F F
COUNT 1 1 1 1
而我们获得的pcd文件里并没有第四列数据。初步估计是因为生成点云时,我们并没有给每一个point设置rgb参数。
0 0
- 创建点云文件、加载点云文件
- PCL学习笔记(4):创建点云文件、加载点云文件
- 创建点开头的文件
- pyshp创建shp点文件
- geomagic打开点云文件
- 读取点云文件(.xyz)
- pcl点云PCD文件
- 点云文件的操作
- matlab读取点云文件
- 点云txt文件—>pcd文件
- 点云txt文件—>pcd文件
- 创建shape文件(点、线、面)
- PCL点云文件生成与读取
- 向pcd文件写入点云数据
- VS2005+VTK读入点云文件
- PCL读取与保存点云文件
- 点云数据写入PCD文件
- 利用文件RGB值渲染点云
- Android屏幕适配
- Elasticsearch 安装过程小记
- 微软“云服务”战略效果持续强劲!
- Android 最火的快速开发框架XUtils
- 读-李智慧-大型网站技术架构:核心原理与案例分析
- 创建点云文件、加载点云文件
- 关于友盟QQ纯文本分享
- 几种加密算法的使用场景
- JS的string学习
- Apriori算法改进--FP-Tree(FP-Growth)算法
- Leetcode136: Single Number
- 各种数据库连接池对比
- JDK、JRE、JVM之间的关系
- BZOJ 2753 [SCOI2012] 滑雪与时间胶囊