将txt格式的点云文件转化为pcd格式点云并进行显示!
一、核心函数:
默认设置分割符为空格,可以设置为逗号或分号。可以适当修改,读取坐标之外的反射强度、颜色等其他信息。
1 | bool readTxtFile(const string &fileName, const char tag, const PointCloudT::Ptr &pointCloud) |
需要注意的是,下列写法存在问题,显示点云时没问题,但输出保存时会出现异常。猜测是点云没有设置宽高与有序无需属性导致,求大神解惑。1
2
3
4
5PointT p;
p.x = stod(strvec[0]);
p.y = stod(strvec[1]);
p.z = stod(strvec[2]);
pointCloud.push_back(p);
二、示例代码:
1 |
|
三、运行结果:
四、备注:
当点云原始坐标精度较高时,转换为pcd格式容易丢失精度。从上图可以看出,点云显示效果已然失真,扫描线变成了斜线而不是直线!因此,当原始点云坐标数字有效位数过多时,应该进行平移,减少坐标有效位数。