CStdioFile 是 MFC 封装的 std::ifstream 和 std::ofstream 形成的一个类,可以按行从文件读入数据,使用起来非常的方便,详细使用说明参考 http://msdn.microsoft.com/en-us/library/a499td6y.aspx。
一个简单的读自定义点云文件(坐标、颜色及法向)的函数范例如下:
void ReadCloudFile(const CString & path, pcl::PointCloud<pcl::PointXYZRGB> & cloud, pcl::PointCloud<pcl::Normal> & normal)
{
cloud.clear();
normal.clear();
CStdioFile file;
if (!file.Open(path, CFile::modeRead))
{
return;
}
CString line;
while (file.ReadString(line))
{
if (line.IsEmpty())
{
continue;
}
double X,Y,Z,nX,nY,nZ;
int R,G,B;
sscanf(line, "%lf;%lf;%lf;%d;%d;%d;%lf;%lf;%lf", &X, &Y, &Z, &R, &G, &B, &nX, &nY, &nZ);
pcl::PointXYZRGB p;
pcl::Normal n;
p.x = X;
p.y = Y;
p.z = Z;
p.r = R;
p.g = G;
p.b = B;
n.normal_x = nX;
n.normal_y = nY;
n.normal_z = nZ;
cloud.push_back(p);
normal.push_back(n);
}
file.Close();
}
没有评论:
发表评论