本帖最后由 你猜 于 2013-7-30 16:39 编辑
#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)
{
//读入txt到数组中
ifstream mycloud ("220cp0.txt");
if(!mycloud){
cout<<"unable to open myfile";
exit(1);}//报错
//
pcl::PointCloud<pcl::PointXYZRGB> cloud;
// 创建点云
cloud.width=640;
cloud.height=480;
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];
//while (! mycloud.eof() )
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;
cloud.points.x=x;
cloud.points.y=y;
cloud.points.z=z;
cloud.points.r=static_cast<uint8_t>(r);
cloud.points.g=static_cast<uint8_t>(g);
cloud.points.b=static_cast<uint8_t>(b);
//cloud.points.a=static_cast<uint8_t>(255);
//cerr<<cloud.points.x<<" "<<cloud.points.y<<" "<< cloud.points.z<<" "<<cloud.points.r<<" "<<cloud.points.g<<" "<<cloud.points.b<<endl;
// i++;
}
mycloud.close();
//
//
//for(size_t i=0;i<cloud.points.size();++i)
//{
////cloud.points.x=1024*rand()/(RAND_MAX+1.0f);
////cloud.points.y=1024*rand()/(RAND_MAX+1.0f);
////cloud.points.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.x<<" "<<cloud.points.y<<" "<<cloud.points.z<<" "<<cloud.points.r<<" "<<cloud.points.g<<" "<<cloud.points.b<<std::endl;
return(0);
}
|