由于TXT格式的点云文件是下图中的样子
因此按行读取即可,核心代码段如下
std::string file = fileName.toStdString(); //fileName为文件名,QString型数据
ifstream infile;
infile.open(file.data()); //将文件流对象与文件连接起来
assert(infile.is_open()); //若失败,则输出错误消息,并终止程序运行
string s;
while(getline(infile,s))
{
QString ss,s1,s2,s3;
ss=QString::fromStdString(s);
s1=ss.section(" ",0,0); // 用QString的section()函数提取三维坐标
s2=ss.section(" ",1,1);
s3=ss.section(" ",2,2);
pcl::PointXYZRGB current_point;
current_point.x=s1.toFloat();
current_point.y=s2.toFloat();
current_point.z=s3.toFloat();
pointptr->push_back(current_point); //pointptr是点云指针
}
infile.close();
读取完之后显示就可以啦,效果如下图
经典的斯坦福兔子!!!交流:QQ:1826380364