【解决问题】Number of points different than width * height! 已放弃 (核心已转储)

在使用PCL库将点云数据写入PCD文件时,遇到‘pcl::IOException’错误,提示点数与width*height不符。问题出在点云数据的尺寸设置不正确。解决方案是为点云对象指定正确的height和width。通过遍历点云数据,统计有效点的数量,并将其赋值给width和height,然后成功写入文件。
摘要由CSDN通过智能技术生成

【解决问题】terminate called after throwing an instance of 'pcl::IOException'


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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值