最近在处理点云时发现写入点云坐标竟然耗费了将近6秒的时间
这是我原来写入点云坐标的代码
ofstream OpenF3(path + "point.txt", ios::app | ios::out );
for (int i = 0; i < cloud->points.size(); ++i)
{
OpenF3 << cloud->points[i].x << " " << cloud->points[i].y << " " <<
cloud->points[i].z << endl;
}
penF3.close();
国内的教学帖子基本都是这样教你去写入点云数据,在点云数很少的情况没什么区别,但是点云数量很大时(比如我需要处理的是10w个点云)就很慢
我在国外论坛搜索了一下,发现一种更快的写入方法,这个方法是先将数据串成一个长字符串再写入,避免了一个点一个点的写入
string point_data;
for (int i = 0; i < cloud->points.size(); ++i)
{
point_data = Convert(cloud->points[i].x) + " " + Convert(cloud->points[i].y) + " " + Convert(cloud->points[i].z) + "\n";
}
ofstream OpenF3(path + "point.txt", ios::trunc | ios::out);
OpenF3 << point_data;
OpenF3.close();
使用后,写入TXT大概用时3秒