#include <iostream>
#include <pcl/io/pcd_io.h>
#include <pcl/point_types.h>
#include <string>
#include <fstream>
#include <vector>
using namespace std;
int main(int argc,char**argv)
{
//argv[1]="g261.txt";
//读入txt到数组中
ifstream mycloud (argv[1]);
if(!mycloud){
cout<<"unable to open myfile";
exit(1);}//报错
//统计点云个数
int pnum=0;
char buffer[1024];
while(!mycloud.eof())
{
mycloud.getline(buffer,1000);
pnum++;
}
mycloud.close();
// 创建点云
pcl::PointCloud<pcl::PointXYZRGB> cloud;
cloud.width=pnum;
cloud.height=1;
cloud.is_dense=false;
cloud.points.resize(cloud.width*cloud.height);
float x,y,z,r,g,b;
//x=y=z=0;
//r=g=b=0;
//int i=0;
//char buffer[1024];
mycloud.open(argv[1]);
for(size_t i=0;i<cloud.points.size();i++)
{
mycloud.getline(buffer,1000);
sscanf(buffer,"%f %f %f %f %f %f",&x,&y,&z,&r,&g,&b);
//cout<<buffer<<endl;
uint32_t rgb = ((uint32_t)r << 16 | (uint32_t)g << 8 | (uint32_t)b);
cloud.points[i].x=x;
cloud.points[i].y=y;
cloud.points[i].z=z;
cloud.points[i].rgb = *reinterpret_cast<float*>(&rgb);
//cloud.points[i].a=static_cast<uint8_t>(255);
//cerr<<cloud.points[i].x<<" "<<cloud.points[i].y<<" "<< cloud.points[i].z<<" "<<cloud.points[i].r<<" "<<cloud.points[i].g<<" "<<cloud.points[i].b<<endl;
// i++;
}
mycloud.close();
//
//
//int r =255;
//int g= 0;
//int b= 0;
//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);
//uint32_t rgb = ((uint32_t)r << 16 | (uint32_t)g << 8 | (uint32_t)b);
//cloud.points[i].rgb = *reinterpret_cast<float*>(&rgb);
//
//
// }
//argv[2]="g261.pcd";
//pcl::io::savePCDFileASCII(argv[2],cloud);
pcl::io::savePCDFileBinary(argv[2],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<<" "<<cloud.points[i].r<<" "<<cloud.points[i].g<<" "<<cloud.points[i].b<<std::endl;
return(0);
}
经测试能正常运行 但希望大牛们能继续改进 也希望改进后大家能共享下
|