what(): : [pcl::PCDWriter::writeASCII] Number of points different than width * height!
已放弃 (核心已转储)
)
前景提要
错误的文档位置为:pcd_lianxi/my_ransac/src/my_ransac.cpp
在使用pcl库,写入点云数据为pcl文件时,出现了报错terminate called after throwing an instance of 'pcl::IOException' what(): : [pcl::PCDWriter::writeASCII] Number of points different than width * height! 已放弃 (核心已转储)
此时我的代码如下
for (int i = 0; i < num_points; i++)
{
pcl::PointXYZ pt = cloud->points[i];
if (inliersResult.count(i))//inliersResult.count(i)意思是在inliersResult里是否可以找到i
{
out_plane->points.push_back(pt);//地面
}
else
{
in_plane->points.push_back(pt);//物体(车等障碍物)
}
}
pcl::PCDWriter writer;
writer.write("../sensor/my_1_filtered_ransaced.pcd", *_plane);
解决方案
原因进士红色框内所显示的,点数不一造成的。点云文件中的width和height 的数值在常见的时候是默认值,需要给定一个准确的值。
解决后的代码如下
int j=0;
for (int i = 0; i < num_points; i++)
{
pcl::PointXYZ pt = cloud->points[i];
if (inliersResult.count(i))//inliersResult.count(i)意思是在inliersResult里是否可以找到i
{
out_plane->points.push_back(pt);//地面
}
else
{
in_plane->points.push_back(pt);//物体(车等障碍物)
j++;
}
}
in_plane->height = 1;
in_plane->width=j;
pcl::PCDWriter writer;
writer.write("../sensor/my_1_filtered_ransaced.pcd", *_plane);
参考文章
https://blog.csdn.net/weixin_42734533/article/details/108124003